2013-02-13 5 views
0

저는 안드로이드 애플리케이션이 던져진 모든 예외를 잡아 내고 전자 메일을 보내야한다고 코딩하고 있습니다.주요 활동에 예외를 던지십시오.

예 :하지만 내 응용 프로그램의 일부 지역에서 난 그냥 방법으로 예외를 던질 수없는이 onCreateDialog()를 정의 DialogFragment에 :

builder.setView(addCatLayout) 
        // Add action buttons 
        .setPositiveButton(R.string.button_ok, 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, int id) { 

            try { 
            // Save some data in DB here 
            } catch (Exception e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } 
            dialog.dismiss(); 
           } 
          }) 
        .setNegativeButton(R.string.button_cancel, 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            // Close the dialog window 
            dialog.dismiss(); 
           } 
          }); 
      return builder.create(); 
전에서의 try catch 블록을 제거하는 방법

내 질문 이 메서드는 내 주요 활동에서 잡힐 수있는 예외를 직접 던져? 모든 예외를 잡아 내 메일을 보내는 주요 활동에서 블록 잡기 블록 하나만 갖고 싶습니다. 이게 가능한거야?

감사합니다.

+0

확인되지 않은 예외를 throw하여이를 수행 할 수 있습니다. 그래서 RuntimeException으로부터 상속받은 예외. 그런 예외는 걸리지 않아도됩니다 (Checked). –

답변

1

당신은 활동 대화 상자를 만들고이

활동의 예외를 처리하려면 다음

protected void handleException(Exception e) { 
    e.printStackTrace(); 
} 

의 OnClick :

@Override 
public void onClick(DialogInterface dialog, int id) { 
    try { 
     // Save some data in DB here 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     handleException(e); // methods are visible to nested classes 
    } 
    dialog.dismiss(); 
} 

당신이 대화 외부 활동을 작성하는 경우, 다음 너해야 해

public void handleException(Exception e) { 
    e.printStackTrace(); 
} 

대화 상자 만들기 클래스

public static void createDialog(final YourActivity activity) { 

.... 

    @Override 
    public void onClick(DialogInterface dialog, int id) { 
     try { 
      // Save some data in DB here 
     } catch (Exception e) { 
      activity.handleException(e); 
     } 
     dialog.dismiss(); 
    } 


} 

하지만 그 방법은 예외 핸들러가

public interface ExceptionHandler { 
    void handleException(Exception e); 
} 

그리고 패스입니다

public final class YourActivity implements ExceptionHandler { 

처럼 활동 몇 가지 인터페이스를 구현 할 수있는 더 좋은 연습입니다 예외 처리기 인터페이스

public void createDialog(final ExceptionHandler handler) { 
+0

고마워요! 인터페이스를 만들면 이런 식으로 예외를 처리하는 것이 좋습니다. – Meher

관련 문제