2013-11-21 2 views
0

나는 AndroidTextElementListener 이벤트에 리스너를 바인딩 할 수있는 Android SAX 파서를 사용하고 있지만 Android에서 제공하는 리스너는 예외를 throw 할 수 없습니다. 예를 들어 어떻게 중지합니까? 프로세스 동안 파서?Android SAX 구현에서 예외를 throw 할 수 없습니다.

일부 코드 :

item.getChild("child").setEndTextElementListener(new EndTextElementListener() { 
     @Override 
     public void end(String s) { 

      if(expression) 
       throw new CustomException(); //Can't do this because end method don't throw SaxExceptions 

     } 
    }); 

CustomException이 방법에 의해 SAXException를 확장합니다. 하지만 청취자는 SaxExceptions를 던지지 않으므로 어떤 방식 으로든 그것을 수행 할 수 있습니까? 또는 끌어 오기 구문 분석기로 전환하는 것이 유일한 옵션입니까?

+0

이 컴파일러는 예외를 발생하도록 허용하지 않습니다 건가요? 확인되지 않은 예외, 즉 RuntimeException의 하위 클래스를 throw하는 것은 어떨까요? – EJK

답변

1

정확히 어떤 유형의 예외가 발생하는지 신경 쓰지 않으면 RuntimeException의 하위 클래스를 던집니다. 컴파일러가이를 허용합니다.

if(expression) 
    throw new MyCustomException(); 
} 

여기서

class MyCustomException extends RuntimeException ... 
관련 문제