quarta-feira, 27 de maio de 2015

Exceção - código 9

01 /** Testando...
02 tratamento de exceção com todos os elementos (try catch finally).
03 O que motivou este teste Ã© verificar que elementos são executados mesmo
04 Qual a ordem de execução quando ocorre exceção e finally não tem return?
05 Neste código, o que vem depois do tratamento não Ã© executado por causa
06 do return dentro do try.
07 Este Ã© curioso - quando lança a exceção, executa o catch, antes do return salta para o finally, salta de volta para o finally e executa o return do catch.
08 Quando não lança, executa o finally e continua depois do try...
09 
10 Para que serve finally?
11 O bloco finally existe para agregar todas as instruções que "precisam ser executadas para encerrar o método limpamente". Em geral contém comandos que liberam recursos compartilhados, por exemplo, fecham arquivos, pipes, sockets, liberam acesso a variáveis compartilhadas, ... 
12 
13 um exemplo do que acontece quando isso não Ã© feito direito:
14 Quando estamos editando um arquivo armazenado num pendrive e o editor aborta com o arquivo aberto, em geral não Ã© possível ejetar o pendrive. Explicação: o funcionamento normal do SO não permite ejetar o pendrive enquanto o arquivo estiver em uso - isso evita perda de dados. Quando abrimos o arquivo no editor de texto, este informa ao sistema operacional que o arquivo está em uso. Quando o editor aborta, não informa ao sistema operacional para fechar (e liberar) o arquivo, logo para o SO, o arquivo continua em uso. O que vemos Ã© o editor fechado e o pendrive que não ejeta. 
15 */
16 public class DivZero6 {
17    public static void main (String[] args) {
18       int a, b;
19       a=5;
20       b=0;
21       try {
22          a=a/b;
23          System.out.println ("depois do erro, dentro do try.");
24       catch (Exception e) {
25          System.out.println ("catch " + e.getMessage());
26          return;
27       finally {
28          System.out.println ("finally");
29       }
30       System.out.println ("continuou...depois do try, fora do catch e do finally");
31    }
32 }
Java2html

Nenhum comentário:

Postar um comentário