tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
613
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #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ß Tom
     
    Java 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

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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)
     

  3. #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ß Tom
     
    Java 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

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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

  1. Antworten: 7
    Letzter Beitrag: 09.06.10, 14:35
  2. Problem mit checked="checked"
    Von Nord-Süd-Richtung im Forum HTML & XHTML
    Antworten: 17
    Letzter Beitrag: 31.07.09, 17:44
  3. Radiobutton checked
    Von Tinoh im Forum Javascript & Ajax
    Antworten: 10
    Letzter Beitrag: 11.11.05, 17:45
  4. checked menuitem
    Von mashine-obf im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 13.10.05, 14:04
  5. Control.Checked
    Von staTIX im Forum .NET Archiv
    Antworten: 7
    Letzter Beitrag: 15.12.04, 20:30