컴파일 에러 : 컴파일 시에 발생하는 에러
런타임 에러 : 실행 시에 발생하는 에러
논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것
- 소스코드를 컴파일 하면 컴파일러가 소스코드(*.java)에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 오류가 있는지를 알려줌
- 런타임 에러를 방지하지 위해서는 프로그램의 실행도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요함
> 에러(error) : 발생하면 복구할 수 없는 심각한 오류
> 예외(exception) : 발생하더라도 수습될 수 있는 비교적 덜 심각한 것 -> 적절한 코드로 비정상적 종료 방지 가능
예외 클래스의 계층구조
- Exception 클래스와 그 자손들
- RuntimeException클래스와 그 자손들
- RuntimeException 클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외들, 자바의 프로그래밍 요소들과 관계
> ex) ArrayIndexOutOfBoundsException, NullPointerException, ClassCastException, ArithmeticException
- Exception 클래스들은 주로 외부의 영향으로 발생할 수 있는 것들, 프로그램 사용자들의 동작에 의해서 발생
> FileNotFoundException, ClassNotFoundException, DataFormatException
예외처리하기 - try-catch문
예외 처리(exception handling)
- 정의 : 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것
- 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상탤르 유지하는 것
- 발생한 예외를 처리하지 못하면, 프로그램은 비정상적으로 종료됨
- 처리되지 못한 예외(uncaught exception)는 JVM의 '예외처리기(UncaughtExceptionHandler)'가 받아서 예외의 원인을 화면에 출력
1
2
3
4
5
6
7
8
9
10
|
try {
//예외가 발생할 가능성이 있는 문장들을
} catch (Exception1 e1) {
//Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 작성
} catch (Exception2 e2) {
//Exception2이 발생했을 경우, 이를 처리하기 위한 문장을 작성
} catch (Exception3 e3) {
//Exception3이 발생했을 경우, 이를 처리하기 위한 문장을 작성
}
|
cs |
- 하나의 메서드 내에 여러 개의 try-catch문이 사용될 수 있으며, try블럭 또는 catch블럭에 또 다른 try-catch문이 포함될 수 있음
- try-catch문에서는 try 내에서 예외가 발생한 경우에만 일치하는 catch문을 찾은 후 try-catch문을 빠져나가서 수행을 진행하고, 그렇지 않으면 catch문을 거치지 않고 try-catch문을 빠져나가서 수행을 계속함
> 예외가 발생하면 발생한 이후에 있는 try블럭의 문장들은 수행되지 않으므로, try블럭에 포함시킬 코드의 범위를 잘 선택해야함
출처 : <자바의 정석>, 남궁 성
https://kookyungmin.github.io/language/2018/06/06/java_18/
'JAVA > JAVA' 카테고리의 다른 글
oracle-java8-installer' has no installation candidate (0) | 2020.09.07 |
---|---|
[자바의 정석] 7-2. 오버라이딩(overriding) (0) | 2020.03.16 |
[자바의 정석] 7-1 상속 (0) | 2020.03.12 |
[자바의 정석] 3-5 생성자 (0) | 2020.03.11 |
[자바의 정석] 3-4 오버로딩(overloading) (0) | 2020.03.11 |