Jag vet inte om detta är fel forum, men jag kan inte låta bli att dela med mig. Vet inte om det är så mycket att svara på, men kunde inte låta bli. Nej jag tog inte illa upp. Det som är farligt med On error Resume next Är att det gör det nästan onöjligt att felsöka. Eftersom koden bara glatt hoppar vidare till nästa rad. Låt oss ta ett exempel:On error...
Som ni vet så måste man ju alltid fånga upp och ta hand om fel.
Det är ju lite för vanligt (och igenteligen helt fel) att bara skriva On Error Resume Next.
Enligt alla handböcker så bör man ju ha en ErrorHandler som man referera till:
On Error GoTo ErrHandler:
Den kan man ju döpa till vad man vill. I en kod som jag läste i veckan stod det mitt i en lång kodtext:
On Error GoTo HellSv: On error...
>Det är ju lite för vanligt (och igenteligen helt fel) att bara skriva On Error Resume Next.
>Enligt alla handböcker så bör man ju ha en ErrorHandler som man referera till:
>On Error GoTo ErrHandler:
Om dina handböcker säger att det är helt fel att skriva On Error Resume Next så säger jag och (troligtvis) de flesta med mig att den författaren är helt fel ute, eller att du läst fel i boken.
Däremot så är det naturligtvis så att man måste tänka sig för när man använder vad (som med allt i programmering såväl som i övriga livet). I vissa lägen vill man inte ha någon mer felhantering än att stega vidare till nästa, i andra att man ska skickas till den ena eller den andra felhanteringen, i tredje att användaren ska få det riktiga felmeddelandet (On Error Goto 0) etc.
Att man sen kan döpa sin "ErrorHandler" till vad man vill är inte så konstigt. Du kan sätta Goto MinRad var du vill, och med vilket namn du vill (med undantag för reserverade ord). Finns en annan variant som heter Gosub...Resume som har andra fördelar, men den är något man bör undvika enligt de flesta, eftersom den grötar till koden så mycket.
Vad jag håller med dig om är att många är mycket dåliga på felhantering, och att det är ett område de flesta också måste förbättra sig. Ett citat från okänd är "Programmering är 20% program och 80% felhantering."
Vet inte om det skrivits någon artikel om detta ämne här på PelleSoft, men om inte hoppas jag att någon som känner sig sugen tar tag i det.
Hoppas att du inte tog illa upp av min respons, men den var menad i all vänlighet.
Må väl!
/EESv: On error...
Vad jag menade med att det var dåligt med On Error Resume Next, var att jag tycker det är bättre att försöka ta hand om felen.
Varför jag skrev insändaren var därför att jag fick roligt. Fritt översatt så blir det ju "Blir det fel så dra åt helv....e"Sv: On error...
<code>
Dim con as ADODB.Connection
Dim rs as ADODB.Recordset
On Error Resume Next
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM Tabell", con
If RS.EOF Then
MSgbox "Det finns inga poster!"
Else
Do Until rs.Eof
list1.AddItem rs(0)
rs.Move Next
Loop
End If
</code>
Du kommer får fram meddelande "Det finns inga poster!" oacet hur många poster det finns i tabekllen. Jag har uterlämnat con.Open. Vilket innebär att recordsetet inte öppnas utan ger fel. Eftersom det inte är öppet ger EOF metoden fel.<br>
<br>
Kunde lika väl vara ett stavfel i connection strängen eller SQL satsen. Men med On Error Resume Next är det mycket svårt att finna felet. Med felhantering kan man se vilken rad som ger felet.