AGB  ·  Datenschutz  ·  Impressum  







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

On exception behandeln

Offene Frage von "ozz"
Ein Thema von ozz · begonnen am 13. Jan 2007 · letzter Beitrag vom 13. Jan 2007
Antwort Antwort
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#1

On exception behandeln

  Alt 13. Jan 2007, 10:03
Hallo zusammen,
gibt es eigentlich auch eine Möglichkeit, für das nachfolgende Beispiel auch eine Möglichkeit, mehrere Exceptions zusammenzufassen? Natürlich kann ich eine Procedure oder Funktion angeben.

Delphi-Quellcode:
try
 ...
except
  on EZeroDivide do HandleZeroDivide;
  on EOverflow do HandleOverflow;
  on EMathError do HandleMathError;
else
  HandleAllOthers;
end

veileicht ungefähr so
on EZeroDivide or EOverflow do Handle......;
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: On exception behandeln

  Alt 13. Jan 2007, 11:17
Zitat von ozz:
Hallo zusammen,
gibt es eigentlich auch eine Möglichkeit, für das nachfolgende Beispiel auch eine Möglichkeit, mehrere Exceptions zusammenzufassen? Natürlich kann ich eine Procedure oder Funktion angeben.
Eine direkte Möglichkeit gibt es dafür nicht, was aber auch gar nicht so schlecht ist. An sich möchtest du hier gerade verschiedene Fehler erkennen und unterscheiden (solltest diese also auch unterschiedlich abfangen können). Willst du mehr als einen Fehler auf gleiche Weise behandeln, so spricht einiges dafür, dass es sich um die selbe Fehlerklasse (nicht die gleiche Delphi-Klasse!) handelt. Fehlerklassen werden natürlich auch auf Klassen in Delphi abgebildet, hier könntest du also z.B. alle EMathError Exceptions abfangen und behandeln (EZeroDivide und EOverflow sind nur spezielle EMathError).
In einer Behandlung hast du zudem natürlich die Möglichkeit zu schauen, welche Klasse ein Fehler hat:

Delphi-Quellcode:
procedure handleException(e: Exception);
begin
  if (e.ClassType = EZeroDivide) or (e.ClassType = EOverflow) then
  begin
    // ...
  end;
end;
Schöner (eindeutiger) ist es aber trotzdem, wenn du hier wirklich gleichartige Fehler durch eine eigene Methode behandelst, also die Klassenhierachie auch ausnutzt.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: On exception behandeln

  Alt 13. Jan 2007, 20:00
Warum nicht einfach den Is Operator nutzen? Gibt es einen speziellen Grund?

Delphi-Quellcode:
procedure handleException(e: Exception);
begin
  if ( e Is EZeroDivide) or ( e Is EOverflow) then
  begin
    // ...
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:06 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