Wyświetlanie wyjątków w try/except

0

Witam,
dopiero zaczynam przygode z programowaniem.

Obecnie odkrywam
try except...

i teraz tak
pisze sobie procedurke, ktora cos robi, a w razie bledu ma wyswietlic moj komunikat:

wyczytalem ze powinno sie robic cos w ten desen:

try
(...)
except
   Exception.Create('blad');
try

tylko gdzie mi sie pokaze, ten exception?
czy moge uzyc Showmmesage zwykle?
Do czego wlasciwie sluzy exception.create skoro go nie widze nigdzie?

pozdrawiam

0

tylko gdzie mi sie pokaze, ten exception?
Nigdzie.

czy moge uzyc Showmmesage zwykle?
Na przykład.

Do czego wlasciwie sluzy exception.create skoro go nie widze nigdzie?
Na przykład do tego żeby nim rzucić ;) ale u ciebie wyjątek już JEST utworzony, bo jesteś w bloku except.

0

Nie wiem może o to pytasz?

try
(...)
except
   on E:Exception do ShowMessage('Błąd: "'+E.Mesage+'" co z tym robimy?');
end;

Albo o to:

try
(...)
except
   ShowMessage('Błąd krytyczny spadamy dalej');
   raise;
end;

Albo o to:

try
(...)
except
   ShowMessage('Błąd krytyczny spadamy dalej ale z innym błędem');
   raise Exception.Create('mój błąd krytyczny');
end;
0

czyli Exception.Create nie robi nic sensownego....
myslalem ze moze to sie w konsoli pokazuje w srodowisku - ale nie.

czyli wystarczy pisac

try
except
showmessage
end;

bez zadnych tam exception czy raise i bedzie ok?

0
merlinasd napisał(a):

czyli Exception.Create nie robi nic sensownego....

Jak nie jak tak ?

try
   ...
   if true then raise Exception.Create('mój błąd krytyczny');
except
   on E:Exception do ShowMessage(E.Mesage); // tu się pokaże 'mój błąd krytyczny'
end;
merlinasd napisał(a):

bez zadnych tam exception czy raise i bedzie ok?

Samo raise przejdzie tylko pomiędzy except a end;

0

ok , thx

a jak jest roznica pomiedzy:

try
   ...
   if true then raise Exception.Create('mój błąd krytyczny');
except
   on E:Exception do ShowMessage(E.Mesage); // tu się pokaże 'mój błąd krytyczny'
end;

a

try
   ...
except
   ShowMessage('mój błąd krytyczny'); // tu się pokaże 'mój błąd krytyczny'
end;
1

Taka:

try
   ...
   if A then raise Exception.Create('mój błąd krytyczny');
   ...
   if B then raise Exception.Create('mój błąd niezbyt krytyczny');
   ...
   if B then raise Exception.Create('mój błąd wynikający z tego iż zapomniałem że nie dzieli się przez zero');
except
   on E:Exception do ShowMessage(E.Mesage); // tu nie muszę zgadywać jaki był błąd
end;
0

ostatni post uwazam, ze odpowiedz na moje pytanie, dzieki i pozdrawiam

0

Czy jest możliwosc pokazania wyjatku(wlasny tekst bledu czy cokolwiek) w Oknie Messages w nowszych delphi (cos jakby konsola)?
pozdro

0

Nie wiem czy o to chodzi ale za pomocą OutputDebugString można "wysłać tekst" do Event Log.

0

Dokładnie tak jak napisał @kAzek. I najwygodniej to odczytać AFAIK przy pomocy Debug Window uruchomionego przed programem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1