Java Tratamento de Excees Alcides Calsavara 1 Definio

  • Slides: 15
Download presentation
Java: Tratamento de Exceções Alcides Calsavara 1

Java: Tratamento de Exceções Alcides Calsavara 1

Definição u Exceções são acontencimentos fora do comportamento normal ou desejado para um programa.

Definição u Exceções são acontencimentos fora do comportamento normal ou desejado para um programa. O gerenciamento de exeções permite o controle sobre erros e possivelmente uma solução de contorno. u Exemplos: entrada em formato inválido, arquivo corrompido, conexão de rede não disponível, índice inválido para vetor, . . . 2

Exemplo de código frágil class Test. Null. P { static String s = null;

Exemplo de código frágil class Test. Null. P { static String s = null; public static void main(String args[ ]) { char c 1 = s. char. At(2); // java. lang. Null. Pointer. Exception (programa pára) s = new String("Curitiba"); char c 2 = s. char. At(2); // c 2 = 'r' char c 3 = s. char. At(8); // java. lang. String. Index. Out. Of. Bounds. Exception (programa pára) } } // fim 3

Exemplo modificado com ifs class Test. Null. P { static String s = null;

Exemplo modificado com ifs class Test. Null. P { static String s = null; public static void main(String args[ ]) { if (s != null && s. length( ) > 2) char c 1 = s. char. At(2); s = new String("Curitiba"); if (s != null && s. length( ) > 2) char c 2 = s. char. At(2); // c 2 = 'r' if (s != null && s. length( ) > 8) char c 3 = s. char. At(8); } } // fim 4

Exemplo modificado com tratamento de exceções class Test. Null. P { static String s

Exemplo modificado com tratamento de exceções class Test. Null. P { static String s = null; public static void main(String args[]) { try { char c 1 = s. char. At(2); } catch (Exception e) { System. out. println("Exceção " + e); // Exceção: java. lang. Null. Pointer. Exception } // continua 5

Exemplo modificado com tratamento de exceções (cont. ) s = new String("Curitiba"); try {

Exemplo modificado com tratamento de exceções (cont. ) s = new String("Curitiba"); try { char c 2 = s. char. At(2); // c 2 = 'r' } catch (Exception e) { System. out. println("Exceção " + e); } // continua 6

Exemplo modificado com tratamento de exceções (cont. ) try { char c 3 =

Exemplo modificado com tratamento de exceções (cont. ) try { char c 3 = s. char. At(8); } catch (Exception e) { System. out. println("Exceção " + e); // Exceção: java. lang. String. Index. Out. Of. Bounds. Exception } } } // fim 7

Hierarquia de exceções . . . 8

Hierarquia de exceções . . . 8

Tratando exceções não relacionadas por herança class Test. Null. P { static String s

Tratando exceções não relacionadas por herança class Test. Null. P { static String s = null; public static void main(String args[ ]) { try { char c 1 = s. char. At(2); } catch (Exception e) { System. out. println("Exceção " + e); } catch (Error e) { System. out. println("Erro " + e); } } // fim 9

A cláusula finally class Test. Null. P { static String s = null; public

A cláusula finally class Test. Null. P { static String s = null; public static void main(String args[ ]) { try { char c 1 = s. char. At(2); } catch (Exception e) { System. out. println("Exceção " + e); } catch (Error e) { System. out. println("Erro " + e); } finally { System. out. println("Adios, amigos"); } // executado sempre } } 10

A cláusula throws class Test. Null. P { static String s = null; static

A cláusula throws class Test. Null. P { static String s = null; static void work( ) throws Throwable { try { char c 1 = s. char. At(2); } catch (Exception e) { System. out. println("Exceção"); throw(e); } catch (Error e) { System. out. println("Erro"); throw(e); } finally { System. out. println("Adios, amigos"); } } // continua 11

A cláusula throws (cont. ) public static void main(String args[ ]) { try {

A cláusula throws (cont. ) public static void main(String args[ ]) { try { work( ); } catch(Throwable t) { System. out. println("Erro ou Exceção " + t); } finally { System. out. println("Adios, amigos II"); } } } // fim 12

Definindo suas próprias exceções class Problema. Em. Work extends Exception { public Problema. Em.

Definindo suas próprias exceções class Problema. Em. Work extends Exception { public Problema. Em. Work( ) { } public Problema. Em. Work(String msg) { super(msg); } } // continua 13

Definindo suas próprias exceções (cont. ) class Test. Null. P { static String s

Definindo suas próprias exceções (cont. ) class Test. Null. P { static String s = null; static void work( ) throws Problema. Em. Work { try { char c 1 = s. char. At(2); } catch (Exception e) { throw(new Problema. Em. Work("Exceção em work " + e)); } catch (Error e) { throw(new Problema. Em. Work("Erro em work " + e)); } finally { System. out. println("Adios, amigos"); } } // continua 14

Definindo suas próprias exceções (cont. ) public static void main(String args[ ]) { try

Definindo suas próprias exceções (cont. ) public static void main(String args[ ]) { try { work(); } catch(Problema. Em. Work p) { System. out. println(p); } finally { System. out. println("Adios, amigos II"); } } } // fim 15