2
respostas

[Dúvida] Implementação da Exception

Na aula utilizamos o bloco catch só pra informar que ocorreu N erro:

        //...
        } catch (NumberFormatException e){
            System.out.println("Ocorreu um erro / " + e.getMessage());
        } catch (IllegalArgumentException e){
            System.out.println("Argumento é inválido, verifique se a URL é compativel");
            System.out.println(e.getMessage());

Porém não faria muito mais sentido utilizar a classe pra generalizar as exceções e concatenar com o nome da classe? Por exemplo:

//        } catch (NumberFormatException e){
//            System.out.println("Ocorreu um erro / " + e.getMessage());
//        } catch (IllegalArgumentException e){
//            System.out.println("Argumento é inválido, verifique se a URL é compativel");
//            System.out.println(e.getMessage());
        } catch (Exception e){
            System.out.println("Ocorreu um erro / " + e);
        }

Conseguiríamos o mesmo resultado que um catch para cada classe Exception específica não?

2 respostas

E ai Caio, blz? Quando comecei tinha essa mesma dúvida rsrsrs.... A questão é que, na maioria das vezes a gente precisa tratar essa exceção e não só mostrar. Se eu deixo tudo genérico eu vou ter que encontrar uma outra forma de saber que exceção ocorreu de fato para tomar uma decisão, e isso dá um certo trabalho já que Exception é a classe mãe das exceções. Por isso é melhor especificar as exceções mais comuns que possam ocorrer e no final deixa a mais genérica. Com o tempo você vai entender melhor.

Entendi Flávio, eu imaginei que seria pra tratar cada exceção de um forma diferente mesmo, mas fiquei meio confuso porque a instrutora Jacqueline diz que não é recomendado utilizar a Exception porque não saberíamos que exceção seria capturada, mas utilizando a abordagem que eu mencionei daria sim pra saber qual exceção foi capturada e sua respectiva mensagem também.

Obrigado pela resposta =D