Ir ao conteúdo
  • Cadastre-se
Urameshii

Problema no tratamento da exceção

Recommended Posts

Tô tentando executar um atalho, o código do botão é esse abaixo:

private void botaoEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                            
try {
Runtime.getRuntime().exec ("C:\\Documents and settings\\Aline\\Desktop\\femact-rr.lnk");
}
catch (java.lang.RuntimeException fnfex) {
System.out.println ("Arquivo não encontrado");
}
}

o código de erro é esse:

init:

deps-jar:

Compiling 1 source file to D:\Documents and Settings\CPD-Rossini\Meus documentos\NetBeansProjects\VPN\build\classes

D:\Documents and Settings\CPD-Rossini\Meus documentos\NetBeansProjects\VPN\src\vpn\VPNView.java:222: unreported exception java.io.IOException; must be caught or declared to be thrown

Runtime.getRuntime().exec ("C:\\Documents and settings\\Aline\\Desktop\\femact-rr.lnk");

1 error

FALHA NA CONSTRUÇÃO (tempo total: 4 segundos)

alguém tem ideia do que eu estou fazendo de errado?

obrigado desde já =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que para usar o Runtime.getRuntime().exec() voce precisa de um try catch que trate o IOException.

Vai ficar assim:

 
private void botaoEntrarActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime.getRuntime().exec ("C:\\Documents and settings\\Aline\\Desktop\\femact-rr.lnk");
}
catch (IOException fnfex) {
System.out.println ("Arquivo não encontrado");
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o amigo falou o problema é esse. Minha dica, quando você tiver problemas de Exceção, generalize o erro usando somente Exception, pois assim, se o problema for o tratamento de exceção somente, você verá que funcionará...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela colaboração =)

Bom pessoal, eu tentei fazer o que meu amigo js_junior07 disse. Infelizmente deu outro erro, eu resolvi deixar isso de lado por algumas horas e depois comecei a função do início (5 linhas de código fica fácil... §=) ) e não tratei especificamente a IOException e apenas a Exception no bloco catch.

o código ficou assim:


private void botaoAbrirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime.getRuntime().exec("C:\\Documents and Settings\\Aline\\Desktop\\femact-rr.lnk") ;
}
catch (Exception e){
JOptionPane.showMessageDialog (null, "Link não encontrado");
}
}

depois eu vi a dica do leoleonleo e vi que isso resolve mesmo o problema, mas eu sei que a única coisa que pode gerar execeção nesse caso é o arquivo não ser encontrado. Sendo assim queria aamarrar a exceção com IOException, mas quando tento fazer isso continua dando erro, como no código abaixo...


private void botaoAbrirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime.getRuntime().exec("C:\\Documents and Settings\\Aline\\Desktop\\femact-rr.lnk") ;
}
catch (IOException e){
JOptionPane.showMessageDialog (null, "Link não encontrado");
}
}

o erro é esse

init:

deps-jar:

Compiling 1 source file to C:\Documents and Settings\Convidado\Meus documentos\NetBeansProjects\TesteVPN\build\classes

C:\Documents and Settings\Convidado\Meus documentos\NetBeansProjects\TesteVPN\src\testevpn\TesteVPNView.java:255: cannot find symbol

symbol : class IOException

location: class testevpn.TesteVPNView

catch (IOException e){

1 error

CONSTRUÇÃO FALHOU (tempo total: 0 segundos)

o que fazer? o que está errado no código com IOException?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu imagino que exista alguma exceção não tratada, por isso, não dá certo além da IOException deve haver alguma outra... você pode fazer o seguinte


private void botaoAbrirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime.getRuntime().exec("C:\\Documents and Settings\\Aline\\Desktop\\femact-rr.lnk") ;
} catch (IOException e){
JOptionPane.showMessageDialog (null, "Link não encontrado");
} catch (Exception erro){
JOptionPane.showMessageDialog (null, "Erro desconhecido");
}
}

ou ainda assim ...


private void botaoAbrirActionPerformed(java.awt.event.ActionEvent evt) {
try {
Runtime.getRuntime().exec("C:\\Documents and Settings\\Aline\\Desktop\\femact-rr.lnk") ;
}catch (IOException e){
JOptionPane.showMessageDialog (null, "Link não encontrado");
}catch (java.lang.RuntimeException fnfex) {
JOptionPane.showMessageDialog (null, "Erro no programa chamado");
}catch (Exception erro){
JOptionPane.showMessageDialog (null, "Erro desconhecido");
}
}

Editado por leoleonleo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eu imagino que exista alguma exceção não tratada, por isso, não dá certo além da IOException deve haver alguma outra...

É mesmo... :D Quando a exceção foi tratada genéricamente o problema foi resolvido. Mas quando trata-se apenas IOException o erro volta a ocorrer...

vou testar o código sugerido, tratando IOExpetion no primeiro bloco catch e Exception no segundo só pra confirmar a teoria.

Agora, eu achei que a única exceção que poderia acontecer seria de o arquivo (atalho não ser encontrado)... O que vocês acham? :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×