(출처: https://speakerdeck.com/gousiosg/exception-handling-bug-hazards-on-android?slide=8)
자바에서 에러와 익셉션은 모두 Throwable 빌트인 클래스의 하위 클래스이다.
try {
//예외 발생 가능한 코드들
} catch {Exception e1} {
//handle e1
} catch {Exception e2} {
//handle e2
} finally {
//예외 여부와 상관없이 무조건 실행되는 코드
}
void foo throws IOException() {
//IOException 발생 가능한 코드
}
void hello() {
try {
foo();
} catch (IOException e) {
//handling code here
}
}
직접 예외를 발생시키기 위해 사용한다.
void foo() throws Exception {
Exception e = new Exception("I am pooh");
throw e;
}
예외가 발생한 메소드와 메소드를 호출한 양측 모두에서 예외 처리를 해야 하는 경우에 사용할 수 있다.
void foo() throws Exception {
try {
} catch (Exception e) {
//handle here
throw e;
}
}
void bar() {
try {
foo();
} catch (Exception e) {
//handle here 2
}
}
class MyException extends Exception {
private final int ERROR_CODE;
private final int DEFALUT_ERROR_CODEE = 100;
MyException(String msg, int errorCode) {
super(msg);
ERROR_CODE = errCode;
}
MyException(String msg) {
this(msg, DEFALUT_ERROR_CODE);
}
public int getErrorCode() {
return ERR_CODE;
}