Autor Thema: [Error Handling] - Code für Best Practices  (Gelesen 5364 mal)

Offline cgorni

  • Junior Mitglied
  • **
  • Beiträge: 54
  • Geschlecht: Männlich
[Error Handling] - Code für Best Practices
« am: 07.07.06 - 09:55:54 »
Hallo zusammen,

ich wollte hier einmal einen Code-Abschnitt posten, den ich in meiner Standard-Error Behandlung benutze. Vielleicht ist das für den einen oder anderen ein Anreiz ebenfalls einen Standard für die Fehlerbehandlung hier zu posten oder überhaupt anzustreben.

Wenn er gefällt könnt ihr Ihn in die Best-Practices gerne aufnehmen  ;D

Folgende Situation:

*************************************************
Sub MeinFehler

On Error Goto ErrorGeneral

....


goto ExitSub

'------ Fehlerbehandlung ------
ErrorGeneral:

  etext = ErrorHandlingLocal("Irgendein Kommentar", <Level>)
  Resume ExitSub

ExitSub:

End Sub

*************************************************

Wir fangen also alle Fehler auf, die wir im Code selbst nicht anderweitig behandeln. Der Grund weshalb ich mit der Sprungmarke ExitSub: arbeite ist der, das ich einen Punkt haben möchte (egal ob Fehler oder nicht), bei dem die Sub-Verarbeitung beendet wird und nicht mehrere im Code verteilte Punkte (mit 'Exit Sub').

Die Funktion 'ErrorHandlingLocal' heißt so, weil Sie eher für Programmcode gedacht ist, der von einem Benutzer ausgeführt wird, z.B. über einen Aktionsknopf.

Bitte bei der Nutzung innerhalb einer Function darauf achten, das im 'ErrorGeneral'-Abschnitt auch ein Rückgabewert definiert werden sollte, der dem aufrufenden Programmteil die korrekte Weiterarbeit (oder den korrekten Abbruch) ermöglicht.

Hier meine Funktion:

*************************************************

'========================================================================================
' ErrorHandlingLocal      V2.0.0
'
' Purpose         - creates a error message string which summarizes an error
'                  - prints the string
'                  - is intended for standard error handling for local functions
'
' Parameters      - ErrorLocation
'
' Returns         - error message string
'
' Created         CHG      (18.01.2005)
' Modified         CHG       (02.02.2006)
'========================================================================================
Function ErrorHandlingLocal(ErrorLocation As String, HandlingType As String) As String
   
   Const TYPE_NONE               = "0"
   Const TYPE_PRINT               = "1"
   Const TYPE_DIALOG               = "2"
   Const ICON_ERROR               = 64
   Const DIALOG_TITLE_ERROR   = "Error"
   
   Dim Title                   As String
   Dim ErrorLine             As String
   Dim ErrorType             As String
   Dim ErrorNr                As String
   Dim ErrorDescription       As String
   
'==============================================   BEGIN  ==============================================
   
   Title                   = "ERROR - " & ErrorLocation
   ErrorType            =  Error
   ErrorNr               = " (" & Err & ")"
   ErrorLine            = " - Line: " & Erl
   ErrorDescription    =   Title & ": " & ErrorType & ErrorNr & ErrorLine
   
   Select Case HandlingType
   Case Type_NONE:                                                                                             ' do nothing
   Case TYPE_PRINT:         Print ErrorDescription                                                            ' print error
   Case TYPE_DIALOG:         Messagebox ErrorDescription, ICON_ERROR, DIALOG_TITLE_ERROR      ' open dialog
   End Select
   
   ErrorHandlingLocal = ErrorDescription
   
   Goto ExitSub
   
'============================================== END ==============================================
   
ExitSub:
End Function

*************************************************

Die Funktion macht also hauptsächlich folgendes
- konstruiert einen Fehlertext aus dem übergebenen Parameter und den Fehlerinfos
- gibt den Fehlertext zurück
- Ausgabe des Fehlertextes in die Statuszeile oder als Messagebox


Meistens ergänze ich 'ErrorGeneral' noch durch eigene Fehlernummern, die ich vorher in einer Konstante definiert habe ungefähr so:

*************************************************
Sub MeinFehler

Const ERROR_BASIC_NUMBER = 1000
Const ERROR_DIVBYZERO_NUMBER = ERROR_BASIC_NUMBER + 1

On Error Goto ErrorGeneral
On Error ERROR_DIVBYZERO_NUMBER Goto ErrorDivByZero

....


goto ExitSub

'------ Fehlerbehandlung ------
ErrorGeneral:

  etext = ErrorHandlingLocal("Irgendein Kommentar", <Level>)
  Resume ExitSub

ErrorDivByZero:
  ...
  Resume ExitSub

ExitSub:

End Sub

*************************************************

Ich weiß, das dies keine Atomphysik ist, aber für mich war diese Funktion einer meiner Schritte, um endlich ein standardisiertes Verfahren für mein Error Handling einzuführen. Vorher habe ich das Thema ein wenig stiefmütterlich behandelt, inzwischen kann ich meine Fehlerbehandlung fast mit "Copy&Paste" in neuen Code einbauen.

Ich hoffe das die Anregung euch dazu animiert eure Standards offenzulegen  ;)

Grüße
C.

Glombi

  • Gast
Re: [Error Handling] - Code für Best Practices
« Antwort #1 am: 07.07.06 - 10:13:20 »
Danke für Deinen Input.

Wir hatten bereits mal vor längerer Zeit eine Diskussion dazu geführt:
http://atnotes.de/index.php?topic=11980.0

Mal sehen, ob das nun wieder zum Leben erweckt wird.

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz