SIGSEV Error abfangen

Antworten
Aloxen
Beiträge: 58
Registriert: Di 31. Mai 2022, 17:40

SIGSEV Error abfangen

Beitrag von Aloxen »

Mein Programm löst an einer Stelle absichtlich einen SIGSEV Error aus. Dieser Fehler tritt zwangsläufig auf. Ich möchte den Fehler und das Fenster was dann kommt abfangen um danach mit meinem Programm weitermachen zu können.
Ich habe es mit der Folgenden Struktur versucht aber der Fehler erscheint trotzdem noch

Code: Alles auswählen

try
	repeat
 		//Anweisung
		 inc(k);
 	until k = 200;	
 except
  on E : Exception do
   showmessage(inttostr(k));
 

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: SIGSEV Error abfangen

Beitrag von theo »

Wenn du das Prog. unter dem Debugger (normal in der IDE bzw. mit F9) startest, springt der an.
Starte ohne Debugger: Strg+Umsch+F9.

Aloxen
Beiträge: 58
Registriert: Di 31. Mai 2022, 17:40

Re: SIGSEV Error abfangen

Beitrag von Aloxen »

Danke, so funktioniert es aber ist das die Vorrausetzung vom Exceptione Handling? Das man den Compiler ausschaltet? Ohne das ich das Programm so starte geht es generell nicht oder?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SIGSEV Error abfangen

Beitrag von wp_xyz »

Du kannst dir für die in der IDE zu ignorierende Exception auch einen eigenen Typ deklarieren und diesen in den Projekteinstellungen unter Sprachausnahmen hinzufügen:

Code: Alles auswählen

type
  EProjException = class(Exception);
...  
try
	repeat
 		//Anweisung
		 inc(k);
 	until k = 200;	
 except
  on E : EProjException do      // <---- wenn dieser Typ ignoriert wird, zeigt die IDE das Exception-Fenster hier nicht mehr an.
   showmessage(inttostr(k));  
 end;
Generell würde ich aber empfehlen, den Block "Anweisung" so zu kodieren, dass gar keine Exception auftreten kann. Exceptions sollten nur für unvorhersehbare Fehlerfälle verwendet werden.
Zuletzt geändert von wp_xyz am Mo 11. Jul 2022, 10:08, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: SIGSEV Error abfangen

Beitrag von theo »

Aloxen hat geschrieben:
Mo 11. Jul 2022, 09:43
Danke, so funktioniert es aber ist das die Vorrausetzung vom Exceptione Handling? Das man den Compiler ausschaltet? Ohne das ich das Programm so starte geht es generell nicht oder?
Nicht Compiler sondern Debugger.
In der IDE startet das Programm standardmässig unter dem Debugger. Den kann man natürlich auch global ausschalten in den Einstellungen oder den Exception Typ ausnehmen (wie wp_xyz).
Wenn das Prog, ausserhalb der IDE läuft, also wenn es "fertig" ist, wird es ja nicht unter dem Debugger gestartet.
Generell würde ich aber auch vorschlagen, für den normalen Programmfluss nicht mit Exceptions zu arbeiten, ausser sie ggf. abzufangen.

Antworten