ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
613
613
EMPFEHLEN
-
04.04.07 12:41 #1
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
in .Net gibts ja zumindest in C# / VB.Net keine Unterstützung für Checked Exceptions. Da nun aber gern Checked Exceptions in C# nutzen würde habe ich mir mal überlegt wie man sowas selber bauen könnte:
http://www.postsharp.org/community/f...laos/325120299
Das witzige daran ist, dass ich gestern mal aus Spaß ein J# Programm im Reflector angeschaut habe...:
Aus:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
package ConsoleApplication1; /** * Zusammenfassungsbeschreibung für das Programm */ public class Program { public static void main(String[] args) { // // TODO: Code zum Starten der Anwendung hier hinzufügen // java.util.List list = new java.util.ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); System.out.println(list); try{ operation1(); }catch(Throwable t){ t.printStackTrace(); } operation2(); } public static void operation1() throws Exception { throw new Exception(); } public static void operation2() { throw new RuntimeException(); } }
Wird im Reflector:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
public class Program { // Methods public static void main(string[] args) { RuntimeHelpers.RunClassConstructor(ObjectImpl); List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); System.@out.println(list); try { operation1(); } catch (Exception exception1) { ThrowableWrapper.wrapThrowable(exception1).printStackTrace(); } operation2(); Utilities.cleanupAfterMainReturns(); } [JavaThrownExceptions("1;java/lang/CloneNotSupportedException;"), JavaFlags(0x408005)] public override object MemberwiseClone() { ObjectImpl.clone(this); return base.MemberwiseClone(); } [JavaThrownExceptions("1;java/lang/Exception;")] public static void operation1() { throw new Exception(); } public static void operation2() { throw new RuntimeException(); } [JavaFlags(0x408001)] public override string ToString() { return ObjectImpl.jloToString(this); } }
... da lag ich mit meiner Idee also gar nicht sooooo daneben
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Diese Unterstützung gibt es auch aus gutem Grund nicht in C# und VB.NET. J# ist an dieser Stelle quasi anders zu beurteilen.
Ich selbst kenne nur Java, welches Checked Exceptions implementiert und das nicht wirklich sauber. C# und VB.NET implementieren es erst gar nicht, solange es dafür keinen wirklich guten Weg gibt.
Warum das für .NET so entschieden wurde, kann man unter folgendem Link nachlesen:
http://www.artima.com/intv/handcuffs.html
(Lockeres Gespräch zwischen Bruce Eckel und Anders Hejlsberg)
-
04.04.07 14:30 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
ich kenne diesen Artikel sehr gut
Jedoch denke ich das einige Argumente darin nicht wirklich überzeugen...
Wenn beispielsweise Argumentiert wird, dass man bei Checked Exceptions die in einer Methodensignatur deklariert sind bei der Weiterentwicklung dieser Methode Probleme bekommen kann wenn man eine weitere Exception deklariert der "alte" API Verwender dann die neue API nicht mehr verwenden kann, da dieser nicht auf die neue Ausnahme reagiert...
Dieses Argument ist IMHO etwas Fadenscheinig, da bei anderen Änderungen wie etwa anderer Rückgabetyp, Änderungen des Methodennamens, neue Parameter / andere Typen etc. das gleiche passiert... (API Verwender muss die Änderungen nachziehen).
Das mal nur als Beispiel...
Bruce Eckel ist ein genialer Ingenieur, aber das heißt noch Lange nicht dass er mit allem recht hat
Ich denke "früher" wurden in anderen Programmiersprachen mit Unterstützung für Checked Exceptions zu viele Checked Exceptions verwendet... über die Verwendung von Checked und Unchecked Exceptions hab ich hier: http://www.tutorials.de/forum/java/2...xceptions.html mal ausgelassen.
Ich denke es wäre sehr hilfreich auch in C# zumindest die Möglichkeit zu haben Checked Exceptions zu verwenden.
Die Fähigkeit vom Compiler auf nicht behandelte Exceptions (die man aber sinnvoll Behandeln könnte) aufmerksam gemacht zu werden ist in der Regel sehr nützlich.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Ich meinte hier vielmehr auch eher die Aussagen von Anders Hejlsberg

Ich persönlich finde Checked Exceptions ja auch praktisch. Aber es hängt eben von der Implementierung derselben ab. Und in Java ist es laut den wirklichen Experten nicht sauber gelöst und zum Großteil auch nachvollziehbar warum. Darum gibt es sie in zB C# auch gar nicht.
Wie gesagt, ich finde sie nicht schlecht, aber es können daraus einige Probleme entstehen und diese sollten gelöst werden bevor es eine entsprechende Implementierung gibt.
Ähnliche Themen
-
Checkboxen checked="checked" nach dem Senden merken
Von Fiberman im Forum PHPAntworten: 7Letzter Beitrag: 09.06.10, 14:35 -
Problem mit checked="checked"
Von Nord-Süd-Richtung im Forum HTML & XHTMLAntworten: 17Letzter Beitrag: 31.07.09, 17:44 -
Radiobutton checked
Von Tinoh im Forum Javascript & AjaxAntworten: 10Letzter Beitrag: 11.11.05, 17:45 -
checked menuitem
Von mashine-obf im Forum .NET Windows FormsAntworten: 4Letzter Beitrag: 13.10.05, 14:04 -
Control.Checked
Von staTIX im Forum .NET ArchivAntworten: 7Letzter Beitrag: 15.12.04, 20:30






Zitieren
Login





