본문 바로가기
CS/JAVA

[JAVA] Exception

by 두둠칫 2021. 1. 18.

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);
    }
}