1. Exception(예외)
비정상종료를 야기하는 의도치 않은 문제
따라서 예외 처리로 실행문이 계속 실행되도록 처리해야한다.
1) Exception class
자바에서는 실행(Run Time)시 발생할 수 있는 오류를 에러(Error)와 예외(Exception) 두가지로 구분한다.
Error | 프로그램 코드에 의해서 수습될 수 없는 심각한 오류(해결불가) Error, RunTimeException class를 포함한 자손 클래스들이 이에 해당한다 |
예외가 발생하면 안되는 코드이기 때문에 개발자가 반드시 if문으로 체크했어야 하는 코드이다. 따라서 try-catch문을 이용하지 않는다. |
Exception | 프로그램 코드에 의해서 수습될 수 있는 다소 약한 오류(해결가능) RunTimeException을 제외한 Exception class 자손 클래스들이 이에 해당한다. |
try-catch문으로 잡는다. |
2) 예외처리방식
// 1. try-catch문 : 직접처리
try {
/* 실행문 */
} catch (예외클래스1 e) {
/* 예외처리 */
} catch (예외클래스2 e) {
/* 예외처리 */
} finally { // finally문은 생략가능
/* 예외와 상관없이 반드시 실행되어야 하는 동작 */
}
// 2. throws문 : 예외가 발생한 곳에서 예외처리하지 않고 위임
public class class_name {
public static void a() throws exception_class {
b();
}
public static void b() throws exception_class {
// exception이 발생할 수 있는 실행문
}
public static void mian(String[] args){
try{
a();
} catch(exception_class e){
// 예외처리
}
}
}
// 3. throw문 : 명시적 예외처리
public class class_name {
public static void a() throws Exception { // 보통 사용자가 만든 예외 클래스 사용
if(조건)
throw new Exception("예외 내용");
}
public static void mian(String[] args){
try{
a();
} catch(Exception e){
sysout(e.getMessage());
}
}
}
- 예외 클래스는 가장 상위 클래스로 다용성을 활용해도 되지만 가독성을 위해 권장하지 않는다.
- 3. throw문에서 사용자가 만든 예외 클래스를 사용하는 이유는 예외 상황 자체가 사용자가 생각한 상황이기 때문이다.
3) 사용자 정의 예외 클래스
class UserException extends Exception{
public UerException(String mesg){
super(mesg);
}
}
'CS > JAVA' 카테고리의 다른 글
[JAVA] JAVA I/O, 객체의 직렬화 (0) | 2021.01.18 |
---|---|
[JAVA] Functional Interface, Stream, String, StringBuffer (0) | 2021.01.14 |
[JAVA] Collection API (0) | 2021.01.14 |
[JAVA] Anonymous class, Lambda Expression, Generics (0) | 2021.01.14 |
[JAVA] Abstract, Interface (0) | 2021.01.12 |