tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
578
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MD1978 MD1978 ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    111
    Hallo,
    ich kenne folgendes von Java: Wenn man dort eine Methode mit throws Exception deklariert, muss die Exception bei Aufruf dieser Method aufgefangen werden.
    Warum ist das in C# anders?
    Wie gebe ich bei einer Methode an, was für Exceptions sie werfen kann?

    Gruss,

    MD
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Du könntest ruhig die Suchfunktiuon benutzen!

    Thread über Exceptions

    MfG cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    MD1978 MD1978 ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    111
    den Thread habe ich schon gelesen.
    Wo steht dort, wie man festlegt, dasss eine Exception aufgefangen werden muss?

    MD
     

  4. #4
    Avatar von Sunray
    Sunray Sunray ist offline Mitglied Gold
    Registriert seit
    Sep 2003
    Ort
    Schweiz
    Beiträge
    190
    Das ist in C#, wie auch in Visual Basic nicht nötig/möglich. Entweder CLR order Compiler übernehmen das für dich. Du musst dich nur ums Exception Handling kümmern.
    Du kannst über die XML-Dokumentation angeben, ob die Methode Exceptions werfen kann, aber es gibt keine Möglichkeit ein Handling zu "erzwingen". Wird eine Exception in der nächsthöheren Funktion nicht behandelt, wird sie weitergereicht, bis sie schliesslich die CLR erreicht und diese sich daran macht, den Fehler anzuzeigen und das Programm ev. zu beenden.
     
    Zu jedem Problem gibt es mindestens eine Lösung.
    Zu jeder Lösung gibt es mindestens eine bessere Lösung

  5. #5
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Java = checked Exceptions & unchecked Exceptions
    C# = nur unchecked Exceptions
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  6. #6
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    try{
        // Stell Dir vor Du hast harausgefunden das Irgendwas NULL ist.
        throw new ArgumentNullException("m_Obj"); // null Refenz
     
        // Stell Dir vor Du hast harausgefunden das irgend ein Array zu kurz ist.
        throw new IndexOutOfRangeException("m_ObjAry"); //
     
    }
    catch ( ArgumentNullException ex ){
        // Hier kannst Du entscheiden was Du jetzt für eine Exception weiterreichst
        // Bsp.:
        throw new ArgumentException(string .Format("Der Parameter {0} darf nicht NULL sein!",ex.ParamName));
    }
    catch ( InedOutOfRangeException ex ){
        // Stell Dir vor an dieser Stelle das Programm geschlossen werden sollte.
        // Bsp.:
        throw new ApplicationException(string .Format("Der Parameter {0} darf nicht weniger als 5. Stallen haben!",ex.Message));
    }
    catch ( Exception ){
        // Hier passiert was Unvorhergesehenes
    }
    finally{
        
    }
    In der Übergeordneten Instanz kannst Du natülich auch das alles wieder abfangen
    und Beispielsweise Meldungen an den User ausgeben.

    MfG cosmo
    Geändert von Christian Kusmanow (04.01.05 um 17:37 Uhr)
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  7. #7
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Zitat Zitat von cosmochaosmaker
    [CODE]
    In der Übergeordneten Instanz kannst Du natülich auch das alles wieder abfangen
    und Beispielsweise Meldungen an den User ausgeben.

    MfG cosmo
    Das ist bekannt aber die Frage geht um "checked exceptions"
    siehe:
    Wo steht dort, wie man festlegt, dasss eine Exception aufgefangen werden muss?
    Und dort gibt es keine Entsprechung unter C#
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  8. #8
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Du weisst das ich ne NULL in Java bin.


    Was würde das für einen Nutzen bringen? Würde es nicht weitere Exceptions mit sich nachziehen?

    Kannst mir das jamand Erklären?

    MfG cosmo
    Geändert von Christian Kusmanow (04.01.05 um 17:47 Uhr)
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  9. #9
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Zitat Zitat von cosmochaosmaker
    Du weisst das ich ne NULL in Java bin.
    Kannst Du mir das Erklären?
    Was würde das für einen Nutzen bringen?
    Checked Exception zwingen den Benutzer einer Biblothek sich darum zu kümmern
    wie er mit Ausnahmen umgeht.

    Beispiel ein Datenbank Klasse, welche natürlich SQLException werfen kann, wenn z.b
    der SQL Server nicht erreichbar ist.
    Definiere ich das diese Methode eine SQLException wirft dann muss sich jeder der meine
    Klasse nutzt Gedanken machen wie er mit diesem Umstand umgeht.

    Bei einer Datenbank Klasse ist es zwar vom Namen her ersichtlich das hier Datenbank Operationen durchgeführt werden.
    Deshalb nehmen wir mal ein etwas abstrakeres Beispiel.
    Eine Klasse eines CMS das einen Links herausgibt.

    Innerhalb dieser Klasse wird auch rekursiev ein Verzeichniss durchsucht um vorhandene Dateien zu behandeln.
    Das hier eine Fileoperation durchgeführt wird ist durch die Klassenbezeichnung MenuOut nicht erkennbar. Die Methode getMenus() aber wirft eine IOException, weshalb der Programmierer gezwungen wird daran zu denken das hier Dinge schief gehen können.

    Habe ich eine Methode die eine bestimmte Exception zwar werfen könnte aber dies meist recht unwahrscheinlich ist und nur in Ausnahmefälle auftritt dann leite ich meine Exception von RuntimeException ab, und sie kann auch abgefangen werden, muss es aber nicht.

    Sprich es ist eine Designentscheidung, um was für eine Exception es sich handelt, und wie und ob sie behandelt werden muss.

    Zitat Zitat von cosmochaosmaker
    Würde es nicht weitere Exceptions mit sich nachziehen?
    Nein wieso sollte es?
    Du muss keine Exception weiter nach oben reichen. Du kannst genau das selbe wie mit einer unchecked Exception machen (wie Java-RuntimeException oder eben C#) sie ignorieren.
    Nur musst du dies bei checked Exception explizit machen.

    try { Menu[] menus = MenuOut.getMenues() } catch(IOException e) { // mir egal }
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  10. #10
    MD1978 MD1978 ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    111
    Dadurch kannst Du sichergehen, dass Nutzer einer Methode sich mit dem Exception dieser Methode befassen. Die Exception kann dann immer noch weiter geworfen werden, aber das steht dann explizit im Code.


    MD
     

  11. #11
    MD1978 MD1978 ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    111
    das war jemand schneller und ausführlicher.
     

  12. #12
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Quasi ein Mekmal was angibt ob in der Klasse/Methode was passieren kann?

    Implizit heisst also: Die Exception wird in der Klasse/Methode behandelt?
    und Explizit heisst: Das man die Exception selber behandelt?

    Wie jetzt? Ihr müsst nicht anworten wenn ichs verstanden hab.

    ( Wenn der Alexander das jetzt ließt, haut der uns bestimmt eine drauf.
    Vollkommen NET OT
    LOL)

    Danke für die ausfühliche Erklärung Christian! Du bist in Ordnung. Und Sorry...
    Ich ärger mich jetzt aber trotzdem nicht weil es das in c# nicht gibt. Ne,Spaß!

    Gruss cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  13. #13
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Wen es jemand interessiert: Why doesn't C# have exception specifications?

    MfG cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

Ähnliche Themen

  1. Exceptions
    Von schiese im Forum Java Grundlagen
    Antworten: 5
    Letzter Beitrag: 24.08.10, 17:50
  2. Antworten: 4
    Letzter Beitrag: 17.07.10, 15:19
  3. Exceptions
    Von lernen.2007 im Forum Java
    Antworten: 1
    Letzter Beitrag: 14.06.06, 13:17
  4. [Java/Exceptions] Exceptionstruktur
    Von TommyMo im Forum Java
    Antworten: 9
    Letzter Beitrag: 21.12.05, 09:46
  5. Exceptions
    Von PPhilipp im Forum Java
    Antworten: 1
    Letzter Beitrag: 07.12.03, 20:17