예외(Execption)
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
- 예외 처리 프로그램 통해 정상 실행상태 유지 가능
- 예외 발생 가능성이 높은 코드 컴파일할 때 예외 처리 유무 확인
일반 예외(exception)
- 컴파일러 체크 예외
- 자바 소스 컴파일 과정에서 해당 예외 처리 코드가 있는지 검사하게 됨
실행 예외(runtime exception)
- 컴파일러 넌 체크 예외
- 실행 시 예측할수 없이 갑자기 발생하기에 컴파일 과정에서 예외처리코드 검사하지 않음
try-catch-finally 블록
- 생성자 및 메소드 내부에서 작성되어 일반예외와 실행예외가 발생할 경우 예외 처리 가능하게 함
try {
// 예외 발생가능 코드
} catch(예외클래스 e) {
예외 처리
} finally {
항상 실행;
}
- try 블록에는 예외 발생 가능 코드가 위치
- try 블록 코드가 예외발생 없이 정상실행되면 catch 블록의 코드는 실행되지 않고 finally 블록의 코드를 실행
- 예외 발생한다면 catch 블록으로 이동 예외 처리 코드 실행이후 finally 블록 코드 실행
- finally 블록은 생략 가능하며, 예외와 무관하게 항상 실행할 내용이 있을 경우에만 작성
다중 catch
- 발생하는 예외별로 예외 처리 코드를 다르게 하는 다중 catch 블록
- catch 블록의 예외 클래스 타입은 try 블록에서 발생된 예외의 종류 말함
- try 블록에서 해당 타입 예외가 발생하면 catch 블록을 실행
- 다중 catch 블록 작성 시 상위 예외 클래스가 하위 예외 클래스보다 아래에 위치해야 함
throws 키워드
- 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘기는 역할
- throws 키워드 뒤에는 떠넘길 예외 클래스를 쉼표로 구분하여 나열
리턴타입 메소드이름(매개변수,...) throws 예외클래스1, 예외클래스2 ... {
}
리턴타입 메소드이름(매개변수,...) throws Exception {
}
혼자 공부하는 자바<한빛 미디어> 신용권 지음
'Java' 카테고리의 다른 글
| 이클립스에서 깃허브로 프로젝트 올리는 법 (0) | 2021.06.01 |
|---|---|
| 인터페이스 (0) | 2021.01.11 |
| 인터페이스 (0) | 2021.01.11 |
| 추상 클래스 (0) | 2021.01.11 |
| 타입 변환과 다형성 (0) | 2021.01.11 |