Exception Handling in C#

mafin

Mitglied
Hallo ich habe eine Frage.

In Java kann ich eine Methode eine Exception werfen lassen.
D.h. muss ich diese vorher fangen. also wenn die methode aufgerufen wird.
Ein try-Block in der methode selbst ist also nicht von nöten.

das so so aus.

public void blalba() throws Exception{

}

geht das so auch in c#?
das war nämlich besser.
dann kann ich alle exceptions in einer klasse fangne.
das ist viel übersichtlicher.
 
Das Beispiel aus Java zeigt nur an, dass diese Methode ein Exception des genannten Typs werfen kann.
Diese Verfahren ist eine Art Contract. Das funktioniert in C# derzeit nur mit der Erweiterung Spec#.

Wenn du in einer Methode jedoch eine Exception wirfst, wird diese immer weiter geworfen, bis sie jemand fängt. Hält sie keiner auf, kommt der berühmte Dialog der UnhandledException.

Und ich finde das Fangen von Exceptions einer Klasse zu überlassen ist nicht übersichtlicher sondern verwirrend. Wie willst du denn so bestimmen, was eine Methode im Ausnahmefall machen soll?!

Hier mal ein Artikel der das ganze erklärt: http://www.c-sharpcorner.com/Upload...282005051444AM/ExceptionHandlinginCSharp.aspx
Es lassen sich im Netz auch diverse Strategien finden.

Und halte dich bitte an die Netiquette!
 
Das Konzept der Checked Exceptions wird von .NET nicht unterstützt, da hier ein anderer Weg gegangen wird. Weiters ist das Fangen aller Ausnahmen in einer einzigen Klasse nicht der ideale Weg.

Ausnahmen sollen dort gefangen werden, wo sie auftreten, außer es würde an dieser Stelle keinen Sinn ergeben und eine Weiterleitung wesentlich angebrachter sein (siehe die vorhandenen Dateizugriffsklassen).

Natürlich kann ein globales Exceptionhandling implementiert werden, was durchaus auch sinnvoll ist, sollte dann doch einmal eine Ausnahme nicht behandelt worden sein. Grundsätzlich sollte allerdings ohne ausgekommen werden.
 
Ich habs eher so verstanden das der Thread Ersteller eine Exception auslösen möchte.
Falls ja so gehts
Code:
if(tuWasFalsches == true)
  throw IrgendNeException();
 
Zurück