ich teste gerade wie ich Abstürzt mein Programm mit z.B. CloseDatabase() abfangen kann
Beim kompilieren bekomme ich die Fehlermeldung "Das angegebene #Database ist nicht initialisiert" und die Procedure ErrorHandler() wird nicht aufgerufen.
Erzeuge ich ein exe-Datei und starte diese dann gibt es kein Messsage.
Mit Verwendung von RaiseError() funktioniert.
Wie kann nicht solche Fehler abfangen?
Danke und Gruß MarcelX
Code: Alles auswählen
UseSQLiteDatabase()
Procedure test(id)
CloseDatabase(id)
EndProcedure
Procedure ErrorHandler()
ErrorMessage$ = "A program error was detected:" + Chr(13)
ErrorMessage$ + Chr(13)
ErrorMessage$ + "Error Message: " + ErrorMessage() + Chr(13)
ErrorMessage$ + "Error Code: " + Str(ErrorCode()) + Chr(13)
ErrorMessage$ + "Code Address: " + Str(ErrorAddress()) + Chr(13)
If ErrorCode() = #PB_OnError_InvalidMemory
ErrorMessage$ + "Target Address: " + Str(ErrorTargetAddress()) + Chr(13)
EndIf
If ErrorLine() = -1
ErrorMessage$ + "Sourcecode line: Enable OnError lines support to get code line information." + Chr(13)
Else
ErrorMessage$ + "Sourcecode line: " + Str(ErrorLine()) + Chr(13)
ErrorMessage$ + "Sourcecode file: " + GetFilePart(ErrorFile(), #PB_FileSystem_NoExtension) + Chr(13)
EndIf
ErrorMessage$ + "Adress instruction: " + InstructionAddress() + Chr(13)
ErrorMessage$ + "Adress string: " + InstructionString() + Chr(13)
ErrorMessage$ + Chr(13)
MessageRequester("OnError example", ErrorMessage$)
End
EndProcedure
OnErrorCall(@ErrorHandler())
test(7)
; RaiseError(#PB_OnError_IllegalInstruction)