YOUNGJIN

자바의 정석 8장( 예외처리 ) 본문

Study/Java

자바의 정석 8장( 예외처리 )

Youngjin Noh 2023. 1. 11. 20:11

컴파일 에러: 컴파일 시에 발생하는 에러

런타임 에러: 실행 시에 발생하는 에러

논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것

 

자바의 런타임 에러

에러: 프로그램 코드에 의해서 수습될 수 없는 심각한 오류

예외: 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

 

RuntimeException 클래스들: 프로그래머의 실수로 발생하는 예외

Exception클래스들: 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외

 

try{
	//예외가 발생할 가능성이 있는 문장
}
catch(Exception e){
	//Exception이 발생했을 경우, 이를 처리하기 위한 문장
}

 

멀티 catch 블럭

try{
	//예외가 발생할 가능성이 있는 문장
}
catch(ExceptionA|ExceptionB e){
	//ExceptionA 또는 ExceptionB가 발생했을 경우, 이를 처리하기 위한 문장
}

 

try{
    throw new Exception("고의로 발생");
}
catch(Exception e){
	//Exception이 발생했을 경우, 이를 처리하기 위한 문장
}

 

 보통 Exception을 throw하는 구문에 예외처리가 되어있지 않다면 컴파일 에러가 나지만, RuntimeException과 그 하위클래스들은 예외처리를 강제하지 않기 때문에 컴파일이 가능하다. 하지만 런타임 에러가 발생할 가능성이 있다.

 

void method throws Exception1, Exception2, ... ExceptionN {
	//메서드의 내용
}

 

try{
    //예외가 발생할 가능성이 있는 문장
}
catch(Exception e){
	//예외처리를 위한 문장
}
finally{
	//예외의 발생여부에 관계없이 항상 마지막에 수행
}
try{
	return;
}
finally{
	System.out.println("try블럭에서 return문이 실행되더라도 finally블럭은 실행되고 메서드 종료");
}

 

사용자정의 Exception

class MyException extends Exception{
	MyException(String msg){
    	super(msg);
    }
}
Comments