Wpis z mikrobloga

@DobryProgramista:
try - spróbuj coś zrobić
catch - złap wyjątek podczas tych czynności, np. może dzielisz przez 0 a nie chcesz, żeby wszystko się rozsypało
finally - a niezależnie czy się udało zrobić rzeczy w try czy nie. na koniec coś tam zrób
  • Odpowiedz
@DobryProgramista:
Jezeli kod w bloku try wyrzuci exception to przejdzie do wykonywania bloku catch.
Za to blok finaly wykona sie zawsze na koncu, niezaleznie od wystapienia exceptiona.
Dodatkowo moze byc jeden try i po nim kilka catchy, ktore wykonaja sie jedynie w przypadku okreslonego exceptiona.
  • Odpowiedz
@DobryProgramista:
try {
Polecenia do wykonania
} catch (SomeException sex) {
Polecenia do wykonywania, gdy poleci wyjątek typu SomeException
} catch (Exception ex) {
Polecenia do wykonania, gdy poleci wyjątek typu Exception, który nie został złapany wyżej
} finally {
Polecenia do wykonania niezależnie czy były wyjątki czy nie
}
  • Odpowiedz
@DobryProgramista: to musi być coś co wyrzuca jakiś wyjątek, coś co rozszerza Throwable, warunki logiczne tu nie zadziałają, chyba że masz metodę to ma (if a > b) throw JakiesException(), ale wtedy raczej tworzy sie własny kod który sprawdza przed użyciem metody czy to poprawne argumenty :D
Wyjątki nie są od kontrolowania logiki aplikacji, szczególnie że tworzenie wyjątku jest dość czasochłonne.
Ale są operacje gdzie nie jesteś w stanie sprawdzić wszystkiego,
  • Odpowiedz
@Golomp:

Za to blok finaly wykona sie zawsze na koncu, niezaleznie od wystapienia exceptiona.


nie zawsze, np ponizej jesli System.exit() nie wyrzuci SecurityException to finally sie nie wykona NIGDY.

try {
System.out.println("try");
System.exit(0)
}
catch (Exception ex) {
System.out.println("catch");
}
finally {
System.out.println("finally");
}
  • Odpowiedz
@afe1: to chyba oczywiste, nigdy nie ogarniam tego przykładu, nigdy nawet jak się uczyłem nie przeszło mi przez myśl że system.exit wykona finally.
Skoro zmuszasz aplikacje do wyjścia, no to wychodzi, no co w tym dziwnego.
Nigdy nie rozumiałem wrzucania tego przykładu wszędzie gdzie ktoś pisze o finally...
  • Odpowiedz