728x90
- 예외 처리는 프로그램이 실행되면서 발생하는 여러 가지 예외 상황을 개발자가 원하는 형태로 처리하도록 만드는 데 있다.
- throw는 예외를 강제로 발생시킨다.
- throws는 예외를 전가한다. 즉, 예외의 내용을 한 곳에서 모아 처리하는 용도로 사용한다.
- try ~ catch ~ finally 문은 실제로 예외를 처리한다.
- 예외 관련 클래스의 최상위 클래스는 Throwable 클래스고 이를 상속하는 Error 클래스와 Exception 클래스가 있다.
- Error 클래스는 프로그램에 있어 심각한 오류 사오항을 처리하는 클래스로 try ~ catch ~ finally를 통해 조작할 수 없다.
- Exception 클래스는 크게 둘로 나눌 수 있다.
- Checked Exception : 컴파일 중에 미리 예외를 예상하고 알려줘서 프로그램 오류를 사전에 처리하게 해 준다. ex) IOException, SQLException
- Unchecked Exception : 컴파일 중에는 확인하지 못하고 프로그램 실행 중에 사용자의 입력이나 데이터 대입 등으로 발생하는 예외를 처리한다. ex) ArrayIndexOutOfBoundsException, ArithmeticException
- 예외 전가는 예외가 발생할 것으로 예상되는 코드가 포함된 method를 만들 때 이 method 내부에서 예외 처리를 하지 않고 외부로 전파하도록 하는 것을 말한다.
- 생성자 method에서 예외 전가를 하는 경우 이를 상속하는 클래스도 예외 전가 처리를 해 줘야 한다. 생성자 method에서는 예외 전가만 가능하다.
- 예외 처리는 다음과 같은 방식으로 한다.
try {
예외 발생 예상 영역;
} catch (예외발생예상클래스 객체) {
예외 발생 시 처리할 내용;
} finally {
예외 발생에 관계없이 항상 처리할 내용;
}
- catch 블록의 경우 여러 Exception을 처리하기 위해 여러 개를 만들 수 있지만 상위 오류 클래스일수록 아래쪽에 위치시켜야 한다.
- Exception 클래스를 상속해 사용자 정의 예외 클래스를 생성할 수도 있다.
- 어설션은 다음과 같이 사용한다.
// 코드 상에서
assert [true나 false를 나타내는 검증 구문] : [검증에서 false가 발생할 때 출력할 내용];
// 어설션을 실행할 때
java -ea 클래스이름 // 어설션 실행
java -da 클래스이름 // 어설션 미실행
java -esa 클래스이름 // 시스템 클래스에 대해 어설션을 실행
- 개발자는 어설션을 통해 사용자가 알 필요없는 내용에 대한 오류 검증을 할 수 있다.
출처 : 헬로 자바 프로그래밍(2016)
728x90