• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

Uma dúvida sobre excepções

3 mensagens neste tópico

Estou aqui confuso com as excepções.

Basicamente tenho um método que embrulha outro método de um pacote. Agora, o método embrulhado 'levanta' uma excepção do tipo java.io.IOException, e o compilador não me compila isto (dá-me erro) se eu não tratar dela.

Só que não sei bem o que devo fazer caso ela seja levantada.

O comentárrio no código seguinte ilustra o problema.


        public JpcapCaptor openDevice(int index){
        
            try {
                
                NetworkInterface[] devices = JpcapCaptor.getDeviceList();
                JpcapCaptor captor = JpcapCaptor.openDevice(devices[index], 65535, false, 20);
                return captor;

            } catch (Exception IOException) {
                
               //Que raio é que eu faço aqui????
               //Isto tem que devolver um objecto do tipo JpcapCaptor... 
               //tenho que ter aqui um return neste bloco ou esta porra não me compila.

            }
            
        }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode meter return null

ou então fazer

public JpcapCaptor openDevice(int index){
            JpcapCaptor captor = null;
            try {

                NetworkInterface[] devices = JpcapCaptor.getDeviceList();
                captor = JpcapCaptor.openDevice(devices[index], 65535, false, 20);

            } catch (Exception IOException) {

            }
                return captor;

        }

dá no mesmo mas pode parecer mais logico.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu é que tens de decidir o que é que fazes quando ocorre uma excepção :P

Uma forma simples de resolveres esse problema será, dentro do bloco catch, devolveres null. É a forma mais simples de resolveres o problema que estás a ter no entanto não quer dizer que seja a melhor dado que estarás a "engolir" uma excepção e fora desse método terás de verificar se o que foi devolvido é válido, o que é um teste desnecessário dado que sabes que é inválido.

Não sei porque motivo essa excepção é lançada, mas sendo uma excepção de IO é algo que talvez deva abortar a execução da aplicação, mas claro, não sabendo mais pormenores posso estar a dizer asneira, até porque pode ser algum inócuo para a aplicação.

Uma outra opção será propagares a excepção, desta forma, enviando a excepção para um método que a saiba tratar de forma mais correcta.

Agora, é normal que isso não compile, dado que indicas que o método devolve um objecto e nem todas as linhas de execução possuem um return, pelo que é um erro para o qual não é possível compilar a aplicação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora