Wow, ist ja schon lange her, dass ich mal richtig in Basic programmiert habe. Da gabs noch keine Systeme mit Maus und Grafik Arbeite in den letzten Jahren vorzugsweise mit Delphi, das erklärt wahrscheinlich die Frage.
Vor 25 Jahren lief Fehlerbehandlung in Basic mal so nebenbei. Hielt nur unnötig auf. War einfacher, das mal eben selbst zu korrigieren. In Delphi lernte ich dann Try..Except...Finally kennen. Schade das man das nicht übernommen hat.
Ich möchte in einer Funktion gleich zu anfang eine Plausiprüfung machen. Wenn die Bedingungen nicht erfüllt sind, dann möchte ich einen Fehler auslösen. In Delphi würde ich einfach Exception.Create('Hier hat wieder jemand Mist eingegeben.........') in den Code einbauen und schon läuft das Programm damit in die Fehlerbehandlung. Welche Möglichkeiten habe ich in SO Basic. Im Programmersguide kommt das m. E. etwas kurz weg.
Hans
Fehler auslösen (Exception Behandlung)
Moderator: Moderatoren
Hallo Hans,
Handarbeit.
Viele Funktionen in Basic liefern Rückgabewerte, auch Fehlercodes. Die kannst du über einfache Schleifen auswerten.
Ich weiss nicht, was du prüfen willst, dann könnte ich dir vielleicht weitergehend Hilfe geben.
Die bekanneste Abfrage ist eigentlich die, ob eine bestimmte Datei existiert oder nicht. Dafür gibt es die Funktion "FileExist()"
Ansonsten schau mal in die Hilfe von Basic. Unter dem Begriff "Runtimefunktionen" ->"Fehlerbehandlungsfunktionen" gibt es einiges, das dir weiterhelfen sollte.
Findest du in der Basic-Hilfe, Startseite....
Gruss
Thomas
Handarbeit.
Viele Funktionen in Basic liefern Rückgabewerte, auch Fehlercodes. Die kannst du über einfache Schleifen auswerten.
Ich weiss nicht, was du prüfen willst, dann könnte ich dir vielleicht weitergehend Hilfe geben.
Die bekanneste Abfrage ist eigentlich die, ob eine bestimmte Datei existiert oder nicht. Dafür gibt es die Funktion "FileExist()"
Ansonsten schau mal in die Hilfe von Basic. Unter dem Begriff "Runtimefunktionen" ->"Fehlerbehandlungsfunktionen" gibt es einiges, das dir weiterhelfen sollte.
Findest du in der Basic-Hilfe, Startseite....
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hi Toxitom
das was in der Doku steht, kann man dann erst anwenden, wenn der Fehler bereits erkannt und die entspfrechenden Aktion ausgelöst wurde.
Ich möchte zu beginn einer Funktion die Übergabeparameter auf Plausibilität prüfen. Am Besten ich gebe einmal ein Beispiel:Wenn einer der übergebenen Parameter nicht plausibel ist, dann macht es keinen Sinn, überhaupt noch weiter zu arbeiten. Deshalbt ist es sinnvoll, einen Fehler auszulösen und darauf entsprechend zu reagieren. Wenn man so will, ist das der organisierte Programm- / Funktionsabbruch.
Ich könnte ja in überall wo hier Fehler auslösen steht ein a = 1 / 0 einbauen. Dann würde ein Fehler Division by Zero Error ausgelöst. Sauber würde ich eine solche "Hilfslösung" mit Sicherheit nicht finden.
Hans
das was in der Doku steht, kann man dann erst anwenden, wenn der Fehler bereits erkannt und die entspfrechenden Aktion ausgelöst wurde.
Ich möchte zu beginn einer Funktion die Übergabeparameter auf Plausibilität prüfen. Am Besten ich gebe einmal ein Beispiel:
Code: Alles auswählen
Function GetBincodeStr(aStock as Integer, aHall as Integer, aBin as Integer) as String
dim sStock as String
dim sHall as String
dim sBin as String
On Error Goto ErrorHandlig
if aStock < 1 or aStock > 99 then
hier Fehler auslösen
end if
if aHall < 0 or aHall > 999 then
hier Fehler auslösen
end if
if aBin < 0 or aBin > 999999 then
hier Fehler auslösen
end if
Ich könnte ja in überall wo hier Fehler auslösen steht ein a = 1 / 0 einbauen. Dann würde ein Fehler Division by Zero Error ausgelöst. Sauber würde ich eine solche "Hilfslösung" mit Sicherheit nicht finden.
Hans
Hallo Hans,
also, eigentlich hast du die Lösung doch schon beschrieben:
Überall dort, wo du "hier Fehler auslösen" geschrieben hast, steht dein Fehleraufruf.
Du kannst zwar auch mit dem Befehl "GoTo" arbeiten, aber eigentlich soll der nicht mehr verwendet werden. Besser wie folgt:
Du erstellst eine eigene FehlerUnterroutine so in der Art:
Wenn du eine Funktion nimmst, kannst du auch Daten übergeben.
Im normalen Code wird dann in den Schleifen die Sub aufgerufen und der normale Ablauf mit "exit" verlassen.
Gruss
Thomas
also, eigentlich hast du die Lösung doch schon beschrieben:
Überall dort, wo du "hier Fehler auslösen" geschrieben hast, steht dein Fehleraufruf.
Du kannst zwar auch mit dem Befehl "GoTo" arbeiten, aber eigentlich soll der nicht mehr verwendet werden. Besser wie folgt:
Du erstellst eine eigene FehlerUnterroutine so in der Art:
Code: Alles auswählen
Sub FehlerRoutine1
tu hier irgend etwas
end sub
Im normalen Code wird dann in den Schleifen die Sub aufgerufen und der normale Ablauf mit "exit" verlassen.
Code: Alles auswählen
sub irgendetwas
....
if aStock < 1 or aStock > 99 then
FehlerRoutine1
exit sub
end if
.....
end sub
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic