Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×