Łapanie wszystkich wyjątków

0

Witam wszystkich. :)

Mam takie krótkie pytanie... Mianowicie, czy jest w Javie jakiś odpowiednik catch(...) z C++?
Inaczej mówiąc, czy istnieje sposób na łapanie dowolnego wyjątku?

Z góry dziękuję za odpowiedź.

0

@Patryk27 nie bądź niemiły :)

@Qkartka, w Javie każdy wyjątek jest klasą dziedziczącą po Exception, więc zamiast np.

try {
...
}
catch (IOException ex) {
...
}

podajesz po prostu:

try {
...
}
catch (Exception ex) {
...
}

Wychwytuje to wszystkie wyjątki.

1

@ShookTea Bzdury opowiadasz. Exception wcale nie matchuje wszystkich wyjątków.
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html

Poza tym łapiesz tak też wszystkie RuntimeExceptions co może być niepożądane...

2

Przy ładowaniu sterowników bazy danych trafiłem parę razy na LinkageError, który nie dziedziczy po Exception.

0

Po Throwable dziedziczy Exception i Error. Error NIE JEST wyjątkiem, tylko błędem JVM, na który programista nie ma wpływu. Exception dzieli się na RuntimeException i całą resztę, RuntimeException to wyjątki, których można było uniknąć, gdyby programista uważał przy programowaniu, i jako tako nie powinny być przechwytywane, jednakże autor wyraźnie napisał:

"Inaczej mówiąc, czy istnieje sposób na łapanie dowolnego wyjątku? "

0

Przykro mi ale się nie zgodzę. Error to też "sytuacja wyjątkowa" (od której skrótem jest "wyjątek") i jak najbardziej wynika ona głównie z błędu programisty a nie JVMa. Bo to że leci ci jakiś OutOfMemoryError to znaczy że ty coś spieprzyłeś w aplikacji a nie że JVM coś robi źle, tak samo z jakimś AssertionError.
Z RuntimeExceptions to też nie do końca tak jest że nie powinny być przechwytywane, bo powinny byc :P Żeby klient nie zobaczył nagle stacktrace jak coś poszło nie tak :)

0

"Core Java" C. Horstmann, G. Cornell:
"Hierarchia Error opisuje błędy wewnętrzne oraz wyczerpanie się zasobów wewnątrz systemu wykonawczego Javy. Nie powinieneś zwracać obiektów tego typu"

0

I czego to dowodzi? Tylko tego że nie powinieneś ręcznie rzucać takich wyjątków co jest dość oczywiste. Zresztą dobre praktyki są takie żeby w ogóle nie rzucać ręcznie standardowych wyjątków tylko tworzyć własną hierarchię wyjątków biznesowych, tak żeby łatwiej było się zorientować co się stało.

0

Przypominam cały czas, że autorowi tematu chodzi o przechwycenie wszystkich WYJĄTKÓW, nie wszystkich sytuacji wyjątkowych (jak nazywacie Error) czy wszystkich klas dziedziczących po Throwable. Autor tematu napisał wyraźnie i cytuję go już drugi raz:
"Inaczej mówiąc, czy istnieje sposób na łapanie dowolnego wyjątku?"
http://translate.google.pl/?hl=pl&tab=wT&authuser=0#pl/en/b%C5%82%C4%85d
http://translate.google.pl/?hl=pl&tab=wT&authuser=0#pl/en/wyj%C4%85tek
http://translate.google.pl/?hl=pl&tab=wT&authuser=0#pl/en/rzuca%C4%87

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