pedrotuga Posted May 28, 2008 at 09:02 PM Report Share #188172 Posted May 28, 2008 at 09:02 PM 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 More sharing options...
magician Posted May 28, 2008 at 09:05 PM Report Share #188174 Posted May 28, 2008 at 09:05 PM 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 More sharing options...
Knitter Posted May 28, 2008 at 09:09 PM Report Share #188175 Posted May 28, 2008 at 09:09 PM 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. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now