1. Exception 개요
- JVM 실행에 문제가 생긴다면 아무리 견고하게 만들어도 결국 실행불능이 된다.
- 곧바로 프로그램이 종료되기 때문에 에러와 예외는 동일하다.
- 하지만 예외는 예외처리를 통해 프로그램 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.
2. Exception 상속관계도
- Exception-RuntimeException-IndexOutOfBoundsException-ArrayIndexOutOfBoundsException
- Throwable-Exception
-Error
- 자바에서는 예외를 클래스로 관리한다.
- 모든 예외클래스는 Exception을 상속받는다
3. 실행예외는 자바 컴파일러가 체크하지 않는다(RuntimeException -> Unchecked Exception)
- 경험 & api 의존한 예외처리 코드를 작성해야 한다
- 자주 발생하는 오류
NullPointerException
ArrayIndexOutOfBoundsException: 배열 인덱스 범위 초과
NumberFormatException: 문자열을 숫자로 변경하다 발생하는 예외
ClassCastException: 상속관계, 구현관계(interface)에서 억지로 타입 변환을 시도할 경우 발생하는 예외
- e.getMessage() //역시 보안상 취약
Sysout(“Exception-01”); //보안 테이블을 별도 보관하고 있고, 개발자는 그 예외처리 보안 테이블에 맞게 출력해주는 것이 좋다.
4 예외처리 코드
- 예외처리 코드(try-catch-finally): 1. 생성자 내부 2. 메소드 내부
try{
//예외 발생 가능 코드 위치
} catch(Exception e){
//try 예외 발생하지 않는 경우 스킵
//try에서 예외 발생하면 즉시 실행을 멈추고 catch로 들어와서 예외 처리 코드를 실행
} finally{
//예외처리, 예외 발생 여부와 상관없이 항상 실행할 내용이 있는 경우 finally블록을 작성해준다.
}
- try-catch 블록을 사용하는 방법 세 가지
1 중첩 catch
2 멀티 catch: | 으로 catch ==> catch (SQLException e1| ClassNotFoundException e) {
3 inner catch 블록
5 throws, throw
throws: 예외 처리 핸들러 넘김
throw: 예외 처리 객체 생성
6 unchecked Exception vs checked Exception
- unchecked Exception: Runtime 시 예외처리
- checked Exception: 컴파일시 예외철
7 try-catch-fanally 블록
- finally은 항상 실행되기 때문에 자원종료 등 예외처리 또는 오류와 상관없이 항상 실행되야 하는 코드 추가
댓글 없음:
댓글 쓰기