2019. 3. 18. 20:26ㆍJAVA
----------------------------------에러와 예외-------------------------------------------------------------
에러 (Error)
에러란 컴퓨터 하드웨어의 오작동 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것
에러 발생 이유
하드웨어 장애
시스템 장애
JVM 장애
예외 (Exceoption)
예외란사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램오류
예외가 발생됐다(X) - 예외를 던져졌다(O) Throwable
예외가 발생하는 이유
사용자의 잘못된 조작
개발자의 잘못된 코딩
일반예외와 실행예외
일반예외
Exception의 자식 클래스들
사용자의 잘못된 조작
컴파일시 체크(예외처리 여부)<- 방어적 코딩
실행예외
RunTimeException및 상속받은 자식 클래스들
개발자의 잘못된 코딩
컴파일시시에 체크하지 않음
예외 처리란
예외가가 발생하더라도 코드가 중단되지 않게 하는것을 예외처리라고 한다.
try ~ catch ~ finally 블록을 사용한다.
try {
예외발생이 예상되는 수행문;
예외발생이 예상되는 수행문. ---- 1
} catch (예외클래스타입 변수) {
예외발생시 실행할 수행문;
예외발생시 실행할 수행문 ---- 2
} finally {
예외발생과 상관없이 항상 실행할 수행문;
예외발생과 상관없이 항상 실행할 수행문. ---- 3
}
예외 발생시 : 1 -> 2 -> 3
예외 미발생시 : 1 -> 3
작성예)
try ~ catch
try {
} catch (예외클래스타입 변수) {
}
try ~ finally
try {
} finally {
}
try ~ catch ~ catch
try {
} catch (예외클래스타입 변수) {
} catch (예외클래스타입 변수) {
}
예외 떠넘기기(예외의 위임)
throws를 이용한 예외떠넘기기(예외처리 위임)
<기본 예외처리>
public void 메소드() {
try {
예외발생이 예상되는 수행문;
} catch (예외클래스타입 변수) {
// 발생된 오루(예외)정보를 로그파일로 기록하는 수행문; logger.error(e);
// 발생된 예외는 가로채고, 사용자정의 예외를 대신 발생시키는 수행문;
} finally {
}
}
<예외 떠넘기기(예외의 위임)>
public void 메소드() throws 예외클래스1, 예외클래스2, ..... {
예외클래스 1의 발생이 예상되는 수행문;
예외클래스 2의 발생이 예상되는 수행문;
}
예시)
try ~ catch를 할경우 대부분 아래처럼 한다.
--throw와 throws--
throw는 catch에서 예외를 잡는것을 가로채서 메소드에 정의된 throws쪽으로 예외를 던져버린다.
사용예
java.lang.Throwable
getMessage()
예외의 메시지를 발생하는 메소드, 문자열을 반환
printStackTrace(PrintWriter s)
예외가 발생한 코드를 실행 순서대로 화면에 출력