Olamagato napisał(a)
Pomijając już to, że Errorów nie łapie się z założenia. :)
Oczywiście że się łapie z założeniem...niekiedy jedynym sposobem na "poprawne sterowanie" jest celowe wyłapywanie wyjątków. Najprostrzy przykład: masz sobie sockecik już po połączeniu i nagle klient się wyłącza i dostajesz java.net.SocketException: socket closed i już wiesz ze musisz znowu przejsć w stan nasłuchu. Jakbyś to zrealizował niby "nie łapiąc z założenia"? A różnicą jest, czy dostaniesz socket close czy connection reset i tak mozęsz sterować programem.
Pozdro
PS: No i jeszcze przeciez sami możemy sobie stworzyc klasę co będzie dziedziczyć po Exception i tam sobie możemy popisać różne bzdurki jakie chcemy. Np. bedzie metoda trescaOstatniegoBledu, która nam wyłapie czy błąd był w pierwszym catchu czy w drugim i napisze jego treść.