AGB  ·  Datenschutz  ·  Impressum  







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

Bitte Warning erklären

Ein Thema von Shark99 · begonnen am 9. Dez 2010 · letzter Beitrag vom 9. Dez 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 19:10
Auch wenn es unschön aussieht, wäre es für die eigene Anwendung auch gesünder. Kann ja evtl. auch vorkommen, dass andere deinen Code nutzen und daher wäre es auch sehr ratsam alles so robust wie möglich zu bauen. Selbst wenn es nur "interne" Klassen sind, die also innerhalb einer eigenen Komponente genutzt werden, baue ich diese so auf, dass interne Fehler durch passende Exceptions aufgedeckt werden, obwohl ich eigentlich weiß, dass ich den Code richtig nutze. Sicher ist sicher (und insgesamt, dann auch sauber programmiert)

-- EDIT: Wuhu, Beitragscounter = Geburtsjahr -- gerade Zahlen kann jeder feiern
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.395 Beiträge
 
Delphi 12 Athens
 
#2

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 19:14
Soll heißen, selbst wann man keine Exceptions behandeln will, sollte man dennoch die Resourcen absichern.

Exceptionbehandlung ala Try-Except ist ein Kann ... muß aber nicht
Ein Resourcenschutzblock ala Try-Finally sollte aber dennoch rein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Bernerbaer
(Gast)

n/a Beiträge
 
#3

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 19:32
Für mich ist folgendes Konstrukt eigentlich der übersichtlichste und sauberste Weg um das Bsp von sahli umzusetzen.
Delphi-Quellcode:
var
  list1: TStringList;
  list2: TStringList;
begin
  list1:=nil;
  list2:=nil;
  try
    list1 := TStringList.Create;
    list2 := TStringList.Create;
  
    ...
  finally
    list1.free;
    list2.Free;
  end;
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#4

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 19:36
@stahli

Es ist klar dass das System inkonsitenz wird. Aber durch die Exceptions ist es besser, weil das Programm dann nur "nicht funktioniert" anstatt Amok zu laufen.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 19:38
@stahli: Aber jetzt stell dir mal vor, dass immer eine TStringList erzeugt und dann mit Daten befüllt wird. Irgendwann kracht das ganze und der Speicher wird nicht freigegeben. In kleinen Anwendungen ist das wahrlich kein Problem, aber bei großen, die auch nicht nur mal schnell ausgeführt und wieder geschlossen werden, spielt sowas sehr wohl eine Rolle. Da der Speicher immer voller wird und es gibt eben nicht unendlich Speicher, auch wenn ich das immer gerne hätte Daher einfach von Anfang an sauber programmieren. Klar, es gibt immer auf das Aufwand/Nutzen-Verhältnis an, gewöhnt man sich aber daran, dann sind auch mal größere Projekte absolut kein Problem und man steht eben auf der sicheren Seite. Aber ich weiß, Informatiker sind bekanntermaßen faul -- meine Person natürlich mit eingeschlossen

Und zum Theme Inkonsistenz: Naja, durch Exception-Verwendung soll ja genau das verhindert werden. Siehe DeddyH:
Zitat:
[edit] Achja, Exception-Handling ist ja nicht dazu gedacht, mögliche Fehlerquellen nicht im Vorfeld ausschließen zu müssen, sondern eher dazu, auf Fehler reagieren zu können, die nicht vorhersehbar sind (Hardwaredefekt, volle Festplatte oder sowas). [/edit]
Durch Exception-Handling baust du ja gerade Code ein, der das System konsistent hält.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#6

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 20:16
Für mich ist folgendes Konstrukt eigentlich der übersichtlichste und sauberste Weg um das Bsp von sahli umzusetzen.
Delphi-Quellcode:
var
  list1: TStringList;
  list2: TStringList;
begin
  list1:=nil;
  list2:=nil;
  try
    list1 := TStringList.Create;
    list2 := TStringList.Create;
  
    ...
  finally
    list1.free;
    list2.Free;
  end;
es sei denn man macht das hier:

Delphi-Quellcode:
var
  list1: TStringList;
  list2: TStringList;
  ol: TObjectList;
begin
  ol := TObjectList.Create;
  try
    list1 := TStringList.Create; ol.Add(list1);
    list2 := TStringList.Create; ol.Add(list2);
  
    ...
  finally
    ol.free;
  end;
was ich ja übersichtlicher finde.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Bitte Warning erklären

  Alt 9. Dez 2010, 20:24
Ist ein interessanter Ansatz, das stimmt! Aber so hast du mehr Speicherverwaltung und die CPU wird "stärker" belasetet, wobei sowas wahrlich ziemlich relativ ist. Ich bevorzuge die einfachste Lösung, da es so für andere auch verständlicher ist, imho.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:07 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