Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

24.06.2006, 11:20

Try - Catch

tagchen leute!

hab mal ne frage!

nehmen wir mal an ich hab da ein programm, das beim ersten start einen registry eintrag macht!
in dem registry key wird nun jedesmal +1 raufgezählt wenn das programm gestartet wird.

nun ist aber folgendes problem.. der ablauf sieht so auf (ganz grob jetz mal)


--------

ProgrammStartet()
SchreibeRegistryEintrag()
Zähle_+1()

--------

jetzt ist halt da das problem dass da was fehlt, und zwar sowas wie:

Nur dann Reg-Eintrag erstellen, wenn der Key NICHT vorhanden ist!

wenn ich mich nicht irre, dann sollte ein laufzeitfehler auftreten, in dem moment wo ich auf einen key zugreife der nicht existiert!

wäre es also ein lösung zu schreiben:

--------

try

ZugriffAufkey() //wenn er besteht klappts - wenn nicht geht er zu catch
Zähle_+1_Dazu()

catch // wenn zugriff fehlschlug

SchreibeKey()

end try

--------

oder wäre diese variante zu umständlich? es gibt ja warscheinlich eigene funktionen von windows, die das überprüfen.. ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

24.06.2006, 11:24

Man kann die Existens auch vorher überprüfen. Try und catch sollte man immer vermeiden, da sie auch auf die Performance gehen(afaik).
Außerdem bekommst du von jedem Win-User mit Reg-Erfahrung eins zwischen die Lichter, wenn du es wagst auch nur eine Zeile in die Registry einzutragen :evil:

Das ist ein faux pas; also Finger weg von der Registry :!:

Schließlich gibt es ini-Dateien u.ä.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

3

24.06.2006, 11:35

Try und Catch darf niemals für Ablaufkontrolle verwendet werden. Mann sollte try und catch wirklich nur für Fehlerbehandlung verwenden. Wenn du try und catch so verwendest, werden deine Programme absolut unnachvollziehbar.

Die Meinung mit Try und Catch immer vermeiden kann ich nicht teilen. Ich habe mittlerweile komplett damit aufgehört, Fehlerbehandlung mittels Return-Values zu machen um Performance herauszuholen. Ich finde, dass der Exception-Mechanismus die einzige brauchbare Art ist, Fehler zu behandeln.

Lediglich bei rechenintensiven Programmsegmenten (ala Kollisionserkennung), also Funktionen die 90% der Rechenleistung verbrauchen, verzichte ich auf den Exception-Mechanismus.

mfg Philipp

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

4

24.06.2006, 11:37

Abgesehen davon, was Nox sagte, funktioniert try/catch nur dann, wenn die aufgerufene Methode eine Exception wirft.

Das ist meines Wissens aber bei keiner der WinAPI Funktionen der Fall, also würde das ohne Wrapper niemals klappen.

Aber den brauchst du auch gar nicht, weil die Zugriffsmethode einen Fehlercode zurückliefert, den du direkt benutzen kann. (Jedenfalls, wenn du die WinAPI benutzt) Schau dir einfach mal die Docu zu RegCreateKey an. (http://msdn.microsoft.com/library/defaul…egcreatekey.asp)

MfG,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

5

24.06.2006, 11:56

danke für eure antworten!

ich hab mich schon ein wenig mit der registry befasst (zumindest in vb)
mir ist schon klar dass man davon die finger lassen sollte!

aber zB: icq erstellt einen subkey für jede icq-nummer die man in der kontakliste gespeichert hat! wozu das gut sein soll, weiß ich auch nicht!

also dachte ich mir: 2 einträge werde ich mir ja erlauben können? ^^


der eine eintrag soll die anzahl der aufrufe speichern, und der andere einfach das datum des letzten zugriffs auf das programm
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Anonymous

unregistriert

6

24.06.2006, 12:00

Zitat von »"rklaffehn"«

Das ist meines Wissens aber bei keiner der WinAPI Funktionen der Fall, also würde das ohne Wrapper niemals klappen.
Möp Falsch. Ich sag nur COM und Managed C++.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

26.06.2006, 07:56

Weil die Ammis mit ihren Bomben um sich schmeißen, entwickelt sich nicht zwingend daraus eine Genehmigung für alle anderen Länder auch ihre Bomben zu schmeißen. Also weil es jemand anders tut, sollte man es selbst dennoch nicht tun :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige