WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Ursprung von Exceptions eruieren (http://www.wcm.at/forum/showthread.php?t=175425)

PredeX 05.10.2005 12:22

Ursprung von Exceptions eruieren
 
Hi!

Eigentlich programmier ich hauptsächlich in JAVA, wo ja bei der definition einer klasse bzw. Methode angegeben wird welche exceptions geworfen werden.
Nun in der Arbeit programmier ich aba in VB.Net und möchte herausfinden, welche funktionen/klassen welche exceptions werfen. Kann mir jemand sagen wie ich das herausfind?

Danke schon im Voraus, aja und ich arbeit mit MS VisualStudio 2003

Biri 05.10.2005 19:30

hi,

in .net gibt es - im vergleich zu java - keine sogenannten "checked exceptions" - siehe z.B.: http://www.25hoursaday.com/CsharpVsJava.html#checked
es wird daher nie angegeben, welche exception geworfen wird - auch in java können ja aber auch andere exceptions auftreten, als die angegebenen.

Was ist der sinn dahinter, herauszufinden, welche exceptions geworfen werden können?

wenn du eine bestimmte exception explizit behandeln willst, musst du einen catch-block dafür vorsehen.
z.B. catch (TypeCastExecption ex)
alle Exceptions werden gefangen durch: catch (Exception ex) -> muss am schluss stehen.
eigene exceptions sollten von "ApplicationException" abgeleitet werden.

Explizit herauszufinden, welche Exceptions geworfen werden können macht imho. keinen Sinn - das führt ja auch irgendwie das Konzept der Exceptions ad absurdum.

das machst du ja auch in java nicht - da legst du ja fest, um welche exceptions sich deine klasse kümmert - nicht, welche geworfen werden können.

fg
-hannes

PredeX 06.10.2005 14:41

also...
 
...ich glaub ich habe meine frage eigentlich nicht wirklich sauber formuliert, denn mir ist nachträglich bewusst geworden, dass ich nicht wirklich wissen müsste, wodurch die exception ausgelöst, sondern warum sie ausgelöst wird. Diese Informationen findet man in der MSDN... :rolleyes:

Noch ein paar worte zu exceptions...
Zitat:

das machst du ja auch in java nicht - da legst du ja fest, um welche exceptions sich deine klasse kümmert - nicht, welche geworfen werden können.
nicht ganz, denn ich könnte ja beispielsweise schreiben
Code:

try {
    ....
} catch(Exception e) {
  throw new IllegalArgumentException()
}

in diesem fall kümmere ich mich schon auch darum, welche exceptions von meiner klasse geworfen werden... was ich dann auch explicit bei der deklaration bekannt geben könnte...

aba ich gebe dir recht wenn du sagst, dass es nicht sehr viel sinn macht alle möglichen exception die eine klasse od eine ihrer methoden werfen könnte, zu kennen, ich dachte nur ganz automatisch, dass es sich bei jener art von exception in meinem programme um eine ganz bestimmte handeln muss, da ich diese eben nicht kannte (das wiederum rührt daher dass ich nun mal hauptsächlich java programmiere und dort doch einige exception kenne):idee:

danke für deine antwort!

Biri 06.10.2005 20:45

hi,

keine ursache - ich programmiere eigentlich sehr wenig bis fast garnix in java, bin daher sicher nicht der spezialist. ;)

ad wodurch die exception ausgelöst wird: eine excetion ist ja wie alles andere auch eine klasse und beinhaltet eine variable, die auf den stack verweist - daraus ist ersichtlich, was passiert ist, bevor die exception aufgetreten ist. (sog. StackTrace)

...k.a. ob das für dich brauchbar ist.

.net verwendet übrigens auch intern einen sogenannten stackwalk, um die rechte eines assemblies zu prüfen.

auch sehr interessant für anwendungsentwicklung unter .net ist die microsoft enterprise library - stellt viele immer wieder benötigte funktionen (konfiguration, MVC-modell, db-zugriff, Exception Handling(!) in wiederverwendbaren blöcken zusammen + ist kostenlos.

fg
-hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag