Jump to content

Uma dúvida sobre excepções


pedrotuga
 Share

Recommended Posts

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.

            }
            
        }
Link to comment
Share on other 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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other sites

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

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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.