Como propagar uma exceção em java

Eu sou um programador C e apenas aprendendo alguns java recentemente porque estou desenvolvendo uma aplicação android. Atualmente estou em uma situação. A seguir é o único.

public Class ClassA{ public ClassA(); public void MyMethod(){ try{ //Some code here which can throw exceptions } catch(ExceptionType1 Excp1){ //Here I want to show one alert Dialog box for the exception occured for the user. //but I am not able to show dialog in this context. So I want to propagate it //to the caller of this method. } catch(ExceptionType2 Excp2){ //Here I want to show one alert Dialog box for the exception occured for the user. //but I am not able to show dialog in this context. So I want to propagate it //to the caller of this method. } } } 

Agora eu quero usar chamar o método MyMethod () em outro lugar em outra class. Se alguém pode me fornecer algum trecho de código como propagar as exceções para o chamador de MyMethod () para que eu possa exibi-las em uma checkbox de diálogo no método chamador.

Desculpe Se eu não sou muito claro e estranho na maneira de fazer esta pergunta.

Apenas não pegue a exceção em primeiro lugar, e mude sua declaração de método para que ela possa propagá-los:

 public void myMethod() throws ExceptionType1, ExceptionType2 { // Some code here which can throw exceptions } 

Se você precisar realizar alguma ação e, em seguida , se propagar, poderá recolocá-la novamente:

 public void myMethod() throws ExceptionType1, ExceptionType2 { try { // Some code here which can throw exceptions } catch (ExceptionType1 e) { log(e); throw e; } } 

Aqui ExceptionType2 não é pego de jeito nenhum – só vai se propagar automaticamente. ExceptionType1 é capturado, registrado e, em seguida, relançado.

Não é uma boa idéia ter blocos catch que apenas relançam uma exceção – a menos que haja algum motivo sutil (por exemplo, para evitar que um bloco catch mais geral o manipule), você deve normalmente remover o bloco catch.

Não pegue e recoloque novamente. Basta fazer isso e pegá-lo no lugar que você quiser

 public void myMethod() throws ExceptionType1, ExceptionType2 { // other code } 

Exemplo

 public void someMethod() { try { myMethod(); } catch (ExceptionType1 ex) { // show your dialog } catch (ExceptionType2 ex) { // show your dialog } } 

Basta relançar a exceção

throw Excp1;

Você precisará adicionar o tipo de exceção à declaração MyMthod() como esta

 public void MyMethod() throws ExceptionType1, ExceptionType2 { try{ //Some code here which can throw exceptions } catch(ExceptionType1 Excp1){ throw Excp1; } catch(ExceptionType2 Excp2){ throw Excp2; } } 

Ou apenas omita a try , pois você não está mais manipulando as exceções, a menos que você coloque algum código extra nas instruções catch fazendo coisas com a exceção antes de voltar a executá-lo.

Eu sempre faço assim:

 public void MyMethod() throws Exception { //code here if(something is wrong) throw new Exception("Something wrong"); } 

então quando você chamar a function

 try{ MyMethod(); }catch(Exception e){ System.out.println(e.getMessage()); }