자바 기초

예외 처리와 어설션

YJH3968 2021. 4. 16. 16:56
728x90
  • 예외 처리는 프로그램이 실행되면서 발생하는 여러 가지 예외 상황을 개발자가 원하는 형태로 처리하도록 만드는 데 있다.
  • throw는 예외를 강제로 발생시킨다.
  • throws는 예외를 전가한다. 즉, 예외의 내용을 한 곳에서 모아 처리하는 용도로 사용한다.
  • try ~ catch ~ finally 문은 실제로 예외를 처리한다.
  • 예외 관련 클래스의 최상위 클래스는 Throwable 클래스고 이를 상속하는 Error 클래스와 Exception 클래스가 있다.
    • Error 클래스는 프로그램에 있어 심각한 오류 사오항을 처리하는 클래스로 try ~ catch ~ finally를 통해 조작할 수 없다.
    • Exception 클래스는 크게 둘로 나눌 수 있다.
      1. Checked Exception : 컴파일 중에 미리 예외를 예상하고 알려줘서 프로그램 오류를 사전에 처리하게 해 준다. ex) IOException, SQLException
      2. 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

'자바 기초' 카테고리의 다른 글

제네릭  (0) 2021.04.18
자바 멀티 스레드  (0) 2021.04.17
추상 클래스와 인터페이스  (0) 2021.04.16
상속성과 다형성  (0) 2021.04.16
중첩 클래스  (0) 2021.04.16