Announcement

Collapse
No announcement yet.

nicht alle Codepfade geben einen Wert zurück

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • nicht alle Codepfade geben einen Wert zurück

    Hallo liebes Forum,

    zum Thema Rückgabewert gibt es bereits einige Beiträge in diversen Foren, aber leider habe ich die Materie trotzdem nicht begriffen .

    ich habe mir aus www.Codeproject.com etwas zum Thema Graphic heruntergeladen - leider verabschiedet sich der Code komentarlos ins Nirvana. Darum versuche ich den Fehler mit Try-Catch und Debug aufzuspüren.

    Der Code:

    Code:
    public override bool Contains(Point point)
    {
    try
    {
    return this.Rectangle.Contains(point);
    } catch (Exception ex) {
    MessageBox.Show(ex.ToString(), "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
    }
    }
    ich habe bereits "einiges ausprobiert" aber leider, ...


    Wie geht das?

    liebe Grüße
    Christian

  • #2
    ja was leider?

    das mit nicht allen Codepfaden bedeutet dass es beim Code passieren kann dass er in einen Zweig läuft in dem dann kein rückgabewert existiert
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

    Comment


    • #3
      ..leider weiß ich nicht wie ich den Code ändern muß, damit es für alle Pfade einen Rückgabewert gibt...

      Comment


      • #4
        Code:
        public override bool Contains(Point point)
        {
        try
        {
        return this.Rectangle.Contains(point);
        } catch (Exception ex) {
        MessageBox.Show(ex.ToString(), "Achtung", MessageBoxButton.OK, MessageBoxImage.Information); return Null
        }
        }
        so würde ich sagen sonst gibts keinen rückgabewert bei der exception denn die exception bedeutet nicht automatisch einen Rückgabewert
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          Nimm den Exceptionhandler raus. Du zeigst ja nur eine Meldung an aber reparierst die Situation nicht. Da du also auch nicht sicher sein kannst das die Anwendung sauber weiterläuft nachdem eine Exception in deinem try Block aufgetreten ist sollet sich die Anwendung dann auch beenden. In dem Fall zieht aber der globale Exceptionhandler und zeigt eben eine Meldung an bevor die Anwendung beendet wird.

          Grundsätzlich sollte man immer nur Exceptions fangen wenn man weiß was im konkreten Fall zu tun ist um die Situation zu bereinigen oder man sich sicher ist das man eine Exception einfach schlucken kann. Eine Message anzeigen gilt nicht als Exception behandeln.

          Und ein 'catch (Exception ex)' ,also das fangen jeder Exception und nicht eine konkreten ist in 99,999% (circa ) falsch.

          Ohne Exceptionhandler bleibt dann kein sinnvoller Code über (du kannst dann Contains der Basiklasse ja gleich direkt aufrufen) womit ich den Code komplett sterben lassen würde aufgrund von Sinnfreiheit

          Comment

          Working...
          X