[인코딩 모드] 레코드 예외

1705 단어
배경.
디버깅된 기계에서 이상이 발생하지 않을 때, 우리는 이상을 기록하여 원격 서버에 보내야 할 수도 있습니다.
장면
사용자의 일부 조작이나 특정 휴대전화에서 이상이 발생할 때 개발자에게 이상을 보내야 할 수 있는 모바일 앱을 만듭니다.
인스턴스
Reporter.java
public interface Reporter {
    public void report(Throwable t);
}

ExceptionReporter.java
public class ExceptionReporter {
    public static final Reporter PrintException = new Reporter() {
        @Override
        public void report(Throwable t) {
            System.out.println(t.toString());
        }
    };

    private static Reporter defalutReporter = PrintException;

    public static Reporter getPrintException(){
        return PrintException;
    }

    public static Reporter getExceptionReporter(){
        return defalutReporter;
    }

    public static Reporter setExceptionReporter(Reporter reporter){
        defalutReporter = reporter;
        return defalutReporter;
    }
}

EmailExceptionReporter.java
public class EmailExceptionReporter implements Reporter {
    @Override
    public void report(Throwable t) {
        sendMessage(t.toString());
    }

    private void sendMessage(String message){
        // Send email
    }
}

Test.java
public class Test {
    public static void main(String args[]){
        try{
            int a[] = {0, 0};
            System.out.print(a[2]);
        }catch (Exception e){
            ExceptionReporter.getPrintException().report(e);
        }

        try{
            String b = null;
            b.toCharArray();
        }catch (Exception e){
            ExceptionReporter.setExceptionReporter(new EmailExceptionReporter()).report(e);
        }
    }
}

좋은 웹페이지 즐겨찾기