AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Raise, welche Anwendungsgebiete?

Ein Thema von Keex · begonnen am 21. Apr 2005 · letzter Beitrag vom 21. Apr 2005
 
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: Raise, welche Anwendungsgebiete?

  Alt 21. Apr 2005, 17:46
Zitat von Keex:
jau, was raise macht und ist ja klar. aber wozu benutze ich es? weil so wie du es beschreibst würde es nur dazu da sein es vor anweisungen zu schreiben, bei denen man 100% weiss das sie dein programm crashen...das kann ja nicht sinn der sache sein
Exceptions lassen sich wörtlich übersetzen, sie sind Ausnahmefehler. Stell dir vor du schreibst eine Klasse zum Datenbankzugriff und du merkst, daß dein Datenbankserver nicht mehr da ist. Dann wirfst du eine Exception, weil er eigentlich da sein sollte. Der Anwender deiner Klasse sollte in entsprechenden try-Blöcken die Exceptions abfangen und sinnvolle Fehlermeldungen ausgeben.
Der Sinn von Exceptions ist nicht, das Programm abstürzen zu lassen (das tun sie schließlich auch nur, wenn der Programmierer keine Ahnung hatte), sondern Fehler direkt zu melden, ohne daß vor der Verarbeitung des Fehlers weitergearbeitet wird.

Ein Beispiel ist die EAccessViolation. Irgendwo hast du auf Speicher zugegriffen, der definitiv nicht dazu bestimmt war, von dir zugegriffen zu werden. Nachfolgender Code (der evtl irgendwas mit dem Speicher macht) darf dabei auf keinen Fall ausgeführt werden, also löst die RTL eine Exception aus und benachrichtigt dich damit, daß in deinem Code irgendwo etwas mächtig schief geht. Derartige Fehlermeldungen solltest du abfangen, schön verpacken (lokalisierte Fehlermeldung, die ein Benutzer auch versteht), und dem Benutzer mitteilen, damit er gegebenenfalls einen Bugreport zurückschicken kann.


Edit:
Zitat von Waldteufel:
Delphi-Quellcode:
  try
    i := 0;
    j := i div 12;
  except
    ShowMessage('Du hast wohl in Mathe nicht aufgepasst... Durch 0 kann nicht geteilt werden...');
    raise;
  end;
Es wird doch auch gar nicht durch 0 geteilt

Edit2: sind ja untypisierte Exceptions! Überlichweise nimmt man da typisierte exceptions und das ShowMessage() überlässt man dem Caller.
Edit3: C++ und Delphi sollte man nicht mischen, auch wenn's verführerisch ist
Immerhin ist die Anwendung unüblich
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz