Thread e Exception, capiturar exception e fazer um throws
7 respostas
gustavo.moda
Amigos,
Tenho um metodo estatico que executa varios comandos e esses comandos vao gerar alguns throws.
Ex.
A aplicacao vai chamar o metodo VendaManager.efetuarSuprimento.
Então, quero empacotar todos os comandos dos metodos em uma Thread, processar ela e caso ocorra alguma exception faca o trhow do metodo.
Estou viajando ou isso é possivel?
Cara, já que vc vai fazer a Thread
podes fazer algo do tipo :
newThread("Nome"){publicvoidrun(){try{// seu código que gera erros}catch(Exceptione){//tratamento de erros}}}
ou então para um tratamento mais avançado de erros usa ThreadGroup e sobreescreva o método
uncatchException(), senão for esse nome é parecido
Abs,
gustavo.moda
dyorgio:
Cara, já que vc vai fazer a Thread
podes fazer algo do tipo :
newThread("Nome"){publicvoidrun(){try{// seu código que gera erros}catch(Exceptione){//tratamento de erros}}}
ou então para um tratamento mais avançado de erros usa ThreadGroup e sobreescreva o método
uncatchException(), senão for esse nome é parecido
Então, to apanhando nisso. (pra variar).
Olha a pilha.
Interface chama o metodo e tem um try catch para aguardar a bagaca. (dependendo de cada erro toma uma acao), isso ja rola bem.
Agora estou mudando o metodo para iniciar a thread e processar os comandos, caso ocorra uma expetption, eu tenho que enviar ela para a interface fazer o tratamento adequado. e isso?
Então a interface vai ter um metodo que vai tomar a acao para cada excpetion que ocorre?
é isso?
Se for, to perdido… Pois a mesma excpetion pode ficar em varios comandos, ex. sangria, suprimento, abrir cupom, etc…
dyorgio
Háaaaaaa, to ligado oque tu quer fazer…
mostrar a janelinha pro usuario enquanto faz
a comunicação em background né?
simples cara assim ó :
JDialogprogresso=newJDialog();Exception[]erro=newException[1];newThread("Nome"){publicvoidrun(){try{// seu código que gera erros }catch(Exceptione){erro[0]=e;}}.start();progresso.setVisible(true);if(erro[0]!=null){throwerro[0];}}
essa é baba vai dizer ?
Abs,
gustavo.moda
Opa. valeu por responder…
Não rolou nao…
Vou explicar.
No frame
publicvoidcomandoSuprimento(Stringresposta){ValorMonetarioBigDecimalvalor=newValorMonetarioBigDecimal(0,2);resposta=(String)JOptionPane.showInputDialog(this.frame,"Informe o valor","Suprimento",JOptionPane.YES_NO_OPTION,newImageIcon(),null,resposta);try{if(resposta==null){return;}valor=newValorMonetarioBigDecimal(NumberFormat.getInstance().parse(resposta).floatValue(),2);[b][i]VendaManager.efetuarSuprimento(UsuarioManager.operador,valor);[/i][/b]}catch(java.text.ParseExceptione){informarErro("Numero inválido!");comandoSuprimento(resposta);}catch(ImpressoraExceptione){informarErro(e.getMessage());}catch(SincronizarExceptione){informarErro(e.getMessage());}catch(ImpressoraManagerExpectione){informarErro(e.getMessage());}catch(VendaManagerExceptione){informarErro(e.getMessage());}catch(UsuarioNaoAutorizadoEfetuarSuprimentoExceptione){LoginPermissaoDialogloginPermissaoDialog=newLoginPermissaoDialog(this.frame,"Suprimento R$ "+valor.getValorFormatado(),LoginPermissaoDialog.SUPRIMENTO);loginPermissaoDialog.login();Usuariousuario=loginPermissaoDialog.getUsuario();if(usuario==null){informarErro(e.getMessage());}else{VendaManager.efetuarSuprimento(usuario,valor);}}catch(Exceptione){informarErro(e.getMessage());}catch(Throwablee){informarErro(e.getMessage());}}
No metodo… VendaManager.efetuarSuprimento(UsuarioManager.operador, valor);
Rodar a tread no metodo VendaManager.efetuarSuprimento executando os comandos e retornando a exception quando ocorer o erro.
saca?
dyorgio
Cara, vc quer uma thread para processar em background e seguir o fluxo?
acho que não né?
vc vai ficar esperando pra saber se ocorreu tudo bem
e avisar o usuario caso o suprimento deu erro por algum motivo certo?
então a melhor maneira de fazer isso é com um Dialogo Indicando que
o programa esta processando o suprimento,
senti falta disso nos seus métodos,
pois se vc não for fazer esse dialogo pro usuario,
doque adianta ter outra Thread rodando?
Abs,
gustavo.moda
Exatamente isso! Mas em vez de Jdialog, tem uma area do frame que rola a informação que o sistema está fazendo.
Entende!?
Por isso queria despresar o jdialog… mas acho que nao vai rolar nao
Vou tentar com JDialog, se funcionar beleza!!!
Valeu pela ajuda.
Esse site é muito bom! Essa mensagem já está indexada no santo google!!!
dyorgio
aaaaaaaaaaa, vc poderia colocar o erro nessa mesma area da janela,
porem o cara poderia já estar fazendo outra coisa,
melhor mesmo é parar com um dialogo e esperar tudo acabar
impressora fiscal é um saco
Qualquer novidade avisa ae
Abs,