0

이것은 약간의 학문적 질문이지만 귀하의 의견을 듣기에 호기심이 많습니다.가장 좋은 예외는 무엇입니까? 또는 잘못 구성된 활동을 처리하는 방법은 무엇입니까?

은 유형 문자열로 대략적으로 매개 변수화되어 있습니다. 활동을 만들 때 나는 항상 IntentputExtra()을 통해 적절한 유형을 전달할 것입니다. 그러나 나는 그 문자열이 단일 값을 가지기를 바랄 뿐이다. 그리고 여러 가지 이유로 하드 코딩을하고 싶지는 않다.

아무튼, 유지 보수 가능한 자바 코드 작성자처럼 잘못된 유형 값의 상위 레벨 버그를 잡으려고 예외를 던질 것입니다. IllegalArgumentException을 사용할 계획입니다. 의미 상으로 더 나은 선택이 있습니까?

아마도 더 좋은 질문은 : 안드로이드 Activity을 시작하는 것이 잘못 구성된 것일 수도 있습니다. 당신과 라이브러리로이 발송하는 경우 내가 말할 것

public class MyActivity { 

    private String type; 

    @Override 
    protected void onCreate(Bundle sharedInstanceState) { 
     super.onCreate(sharedInstanceState); 

     Intent intent = getIntent(); 
     this.type = intent.getStringExtra("type"); 

     if (this.type == null || !this.type.equals("the proper type")) { 
     // is there something semantically better? 
     throw new IllegalArgumentException("You're doing it wrong."); 

     // perhaps it's better just to toast.show(), Log.e(), and finish()? 
     } 

     // ... etc 
    } 
} 
+0

약간의 관련이 없지만 활동에 유효한 "매개 변수"가 무엇인지 정의하려면 enum을 사용하는 것이 좋습니다. (열거 형은 암시 적으로 Serializable이므로 Intent 추가 기능으로 팩할 수 있습니다.) – Karakuri

답변

2

는 코드가, 슈퍼 깔끔한 보면 자신의 예외 (서브 클래스 RuntimeException)를 선언하고 그것을 던져 싶어. 프로그래밍상의 오류를 처리 할 때 토스트 등을 걱정할 필요가 없습니다. 사용자가 수정할 수있는 것이 아닙니다.

+0

제 질문을 닫기 전에 수락하십시오. IllegalArgumentException에서 RuntimeException로 변경되었습니다. – QED