AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exceptions von weit weg abfangen

Ein Thema von JPSelter · begonnen am 22. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#1

Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 09:53
Folgendes Szenario:

Code:
procedure first;
begin
  try
    second;
  except
    dosomethingaboutit;
  end;
end;

procedure second;
begin
  dosomethingthatmightcauseanexception;
end;
Die Prozedur "second" stammt aus einer anderen Unit an der ich nichts verändern möchte. Gleichzeitig besteht aber die Gefahr, dass genau dort eine Exception geworfen wird. Die möchte ich aber abfangen, also dachte ich mir, dass die aufrufende Prozedur "first" dies tun könnte. Macht sie aber nicht. Das was ich dort in die except-Klausel schreibe, wird einfach ignoriert. Wie kann ich das lösen?
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 10:20
das in deinem Except wird nur ignoriert wenn kein Fehler ausgelöst wird. Woher bist du dir so sicher das der Except-Block nie ausgeführt wird? (haltepunkte etc. gesetzt?)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 10:36
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Dialogs;

procedure second;
begin
  case Round(Random) of
    0: StrToInt('Zwei');       // EConvertError
    1: TObject(nil).Destroy;   // Allgemeine Schutzverletzung
  end;
end;

procedure first;
begin
  try
    second;
  except
    ShowMessage('Es ist ein Fehler aufgetreten.');
  end;
end;

begin
  Randomize;
  first;
end.
Zitat von JPSelter:
Die Prozedur "second" stammt aus einer anderen Unit an der ich nichts verändern möchte. Gleichzeitig besteht aber die Gefahr, dass genau dort eine Exception geworfen wird. Die möchte ich aber abfangen, also dachte ich mir, dass die aufrufende Prozedur "first" dies tun könnte. Macht sie aber nicht. Das was ich dort in die except-Klausel schreibe, wird einfach ignoriert. Wie kann ich das lösen?
Das sollte auf jeden Fall funktionieren!!!
Die Unit SysUtils sollte aber eingebunden werden, sonst kann es bei Fehlern statt Exceptions auch RuntimeErrors geben. Die dann das Programm direkt beenden.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 11:48
Zitat von SirThornberry:
das in deinem Except wird nur ignoriert wenn kein Fehler ausgelöst wird. Woher bist du dir so sicher das der Except-Block nie ausgeführt wird? (haltepunkte etc. gesetzt?)
Erstens weil ich Exceptions bekomme und zweitens weil ich dort ein showmessage() drin habe. Hintergrund: Ich scanne einen Datenträger nach ZIP Dateien und liste mir den Inhalt auf. Einige ZIP Dateien sind aber nicht lesbar (liegt an den Units die ich verwende) und werfen eine Exception. Diese Anzahl möchte ich mitzählen, aber das geht nicht, weil er in den except-Block nicht reinspringt.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 11:51
Zitat von JPSelter:
Erstens weil ich Exceptions bekomme und zweitens weil ich dort ein showmessage() drin habe.
Welche Exception bekommst du denn?
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 12:09
Ich habe keine Zeit um nach dem Grund für diese Exception zu suchen, daher zähle ich nur die fehlerhaften ZIPs mit und ignoriere sie.

Im Anhang eine von zwei bisher festgestellten Exceptions:
Miniaturansicht angehängter Grafiken
exc_824.jpg  
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#7

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 12:25
Sieht eher so aus als liegt das Problem an einer Datei, die evtl. kein gültiges Datum für FileAge / DateTimeToStr besitzt.
Ich würde an dieser Stelle evtl. mal einen try except block verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 12:32
Eben genau darum geht es ja. Ich kenne die Zeile, die den Fehler verursacht, aber ich möchte in dieser Unit nichts verändern, weil es nicht meine Unit ist. Sicher kann ich da einen try-Block einfügen, aber dann bräuchte ich diesen Thread nicht erstellen.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#9

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 12:38
Zitat von JPSelter:
Eben genau darum geht es ja. Ich kenne die Zeile, die den Fehler verursacht, aber ich möchte in dieser Unit nichts verändern, weil es nicht meine Unit ist. Sicher kann ich da einen try-Block einfügen, aber dann bräuchte ich diesen Thread nicht erstellen.
Ok, tut mir leid, da hätte ich genauer lesen sollen. Du hast ja oben schon geschrieben, dass du in der Unit (second) nichts ändern willst. Allerdings frage ich mich, warum dein try except Block in _deiner_ unit nicht greift?
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#10

Re: Exceptions von weit weg abfangen

  Alt 22. Feb 2006, 12:42
Hast du die Anwendung mal "ausserhalb" von Delphi gestartet? Kommt die Fehlermeldung dann auch?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz