ServiceImpl
에 의해 throw 된 PhoneNumberInUseException
을 catch하는 코드를 만들려고하지만 아래 코드는 항상 else
문으로갑니다. 단순히 IllegalArgumentException
를 사용할 수없는 이유GWT로 사용자 지정 예외 처리
@Override
public void onFailure(Throwable caught) {
Window.alert("Failed create account.");
if (caught instanceof PhoneNumberInUseException) {
Window.alert("Sorry, but the phone number is already used.");
} else {
Window.alert(caught.toString());
}
}
PhoneNumberInUseException extends RuntimeException
지금 난 그냥 그러나 나는 예외를 처리하기 위해 클라이언트 측 로직을하고있을 것이다,는 Window.alert 통해 보여주는하고, 즉이다 예외 문자열을 서버에서 클라이언트로 잘 전달합니다.
나는 뭔가를 놓친가요?
public class PhoneNumberInUseException extends RuntimeException {
public PhoneNumberInUseException() {
super();
}
}
하고이 같은 서비스를 던지고있다 :
throw new PhoneNumberInUseException();
다음 코드가 제대로 발사한다 당신의
PhoneNumberInUseException
클래스는 다음과 같이 보입니다 경우
현실적으로 당신은 그것을 정확히 코드를 유지 할 수 : –
@ChrisCashwell RuntimeException을 사용하는 이유는 if-else 문 안에 예외를 던져야하기 때문입니다. 반면에 예외에서 확장하면 구문 오류가 발생합니다. – xybrek
내 대답이 업데이트되었습니다. –