AGB  ·  Datenschutz  ·  Impressum  







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

Eine (einzige) Exception blocken

Ein Thema von ToFaceTeKilla · begonnen am 20. Nov 2008 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#1

Eine (einzige) Exception blocken

  Alt 20. Nov 2008, 14:46
Hiho,

und zwar habe ich folgenden Code:
Delphi-Quellcode:
      try ///Wenn fm_SSFDI_GetJobs nicht existiert, Exception werfen
        FDBconnector.ExecuteStoredProcedure_NoOutput(DBConnectionMode_UserDB,nil,'fm_SSFDI_GetJobs',inparam,ErrorAction_Throw);
        Btn_Abgl_Koord.Enabled:= true;
        F_SPJobs_exists:= true;
      except
        on e: exception do
          begin
            Btn_Abgl_Koord.Enabled:= false;
            F_SPJobs_exists:= false;
          end;
      end;
Wie FDBconnector.ExecuteStoredProcedure vermuten lässt, handelt es sich um eine Funktion, die eine Stored Procedure ausführt.
Da die SP "fm_SSFDI_GetJobs" nicht in jeder meiner Datenbanken existiert und dann der Button "Btn_Abgl_Koord" jedesmal dem User eine Exception präsentieren würde, dachte ich mir, führe die Funktion vorher aus und wenn die SP nicht existiert, fang die Exception an der Stelle ab und disable den Button. Das funktioniert auch, nur kommt logischerweise in der IDE die Exception noch. Wie kann ich diese eine Exception abstellen? Da gibts doch bestimmt irgendeinen Schalter oder sowas, oder?

MfG
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Eine (einzige) Exception blocken

  Alt 20. Nov 2008, 14:56
Unter D2006 ist das unter Tools - Options - Debugger Options - Borland Debuggers - Langugage Exceptions - Notify on Language Exceptions (Haken entfernen).

Aber kannst Du nicht aus den Systemtabellen der Datenbank auslesen, ob die SP exisitert? Würde ich für sauberer halten, als einfach zu probieren, ob es geht.

Gruß,
Jens
Jens
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Eine (einzige) Exception blocken

  Alt 20. Nov 2008, 15:02
Sicher, geht auch. Hab ich auch schon vorm Threaderstellen ausprobiert.
Aber interessieren würdes mich dennoch mal, obs da nen Schalter gibt, so in der Art
Delphi-Quellcode:
{$ ShowExceptionsInIDE off}
try
...
except
...
end;
{$ ShowExceptionsInIDE on}
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Eine (einzige) Exception blocken

  Alt 20. Nov 2008, 19:47
Zitat von ToFaceTeKilla:
Da gibts doch bestimmt irgendeinen Schalter oder sowas, oder?
Nope, das kann man nur global in den Optionen einstellen.
Exceptions sind nunmal Ausnahmen, die man nicht unbekümmert in Kauf nehmen sollte.

Delphi-Quellcode:
try
  //...
except
  on E: Exception do
  begin
    //...
  end;
//else
// raise; // wird niemals ausgeführt
end;
Hättest dir die Tipparbeit sparen können. Da alle Objekte, die durch eine Ausnahme erzeugt werden, Nachfahren von Exception sind, wird der Code danach (in diesem Falle ein implizites "else raise") nicht ausgeführt.

Es entspricht also der verbreiteten Unart:
Delphi-Quellcode:
try
  //...
except
  //...
end;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Eine (einzige) Exception blocken

  Alt 20. Nov 2008, 21:22
Zitat von nicodex:
Es entspricht also der verbreiteten Unart:
Delphi-Quellcode:
try
  //...
except
  //...
end;
... die bei Verwendung von zusammengefrickelten Fremdkomponenten (z.B. ADO ) zu einer Zwangsmaßnahme gehört. Wenn angewandt, bitte ordendlich kommentieren!!!!!1!!!11!!!eins!!!elf!!!ELF!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Eine (einzige) Exception blocken

  Alt 21. Nov 2008, 09:34
Zitat von nicodex:
Delphi-Quellcode:
try
  //...
except
  on E: Exception do
  begin
    //...
  end;
//else
// raise; // wird niemals ausgeführt
end;
Hättest dir die Tipparbeit sparen können. Da alle Objekte, die durch eine Ausnahme erzeugt werden, Nachfahren von Exception sind, wird der Code danach (in diesem Falle ein implizites "else raise") nicht ausgeführt.

Es entspricht also der verbreiteten Unart:
Delphi-Quellcode:
try
  //...
except
  //...
end;
Meinst du mit Tipparbeit das
Delphi-Quellcode:
try
dosomething
except
on E: Exception do
  begin
    dosomethingelse
  end;
end;
weil das im Prinzip das gleiche ist wie einfach
Delphi-Quellcode:
try
  dosomething
except
  dosomethingelse
end;
?

edit:
Und wieso ist dass dann eine Unart (jetzt mal vorausgesetzt man lässt den except-block nicht leer)?
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  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 20:25 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