예외 처리

이재연·2021년 1월 15일
0

Java Basic

목록 보기
9/15

자바에서 예외 처리 방법

만약 Exception이 발생할 수도 있는 메소드 problemMethod()가 있다고 해보자

  • try-catch

try 블록 안에서 문제의 메소드를 호출하고 catch블록에서 에러를 처리한다.
catch 블록에는 빈 블록으로 두지 않고 예외처리 구문을 작성하는 것이 좋다.

public void runMethod(){
	try{
		problemMethod();
	}
	catch(Exception e){
		//예외 처리!
	}
}
  • try-catch-finally

예외처리 구문이 끝나면 finally 블록이 실행된다.
try 블록 안에 return이 있어도 실행된다.

public void runMethod(){
	try{
		problemMethod();
		return;
	}
	catch(Exception e){
		//예외 처리!
	}
	finally{
		System.out.println("finally");		
	}
}
//finally가 출력된다.
  • try - with - resources

try 블록에서 사용될 리소스를 받을 때 사용한다.
리소스가 close가 필요한 객체인 경우 예외가 발생할때 자동으로 반환된다.

public void runMethod(){
  try (BufferedReader br =
                 new BufferedReader(new FileReader(path))) {
		return br.readLine();
  }catch{
		//예외 처리!
	}
}
  • throw

예외를 의도적으로 발생시킬때 사용한다.

public void runMethod(){
	throw new RuntimeException("Runtime Exception!");
}
  • throws

메소드에서 발생한 예외에 대한 처리를 호출하는 곳으로 전가한다.

public void runMethod() throws Exception{
	problemMethod();
}

자바의 예외 계층 구조

Throwable 클래스에 ErrorException 클래스가 있다.

Exception과 Error

Error는 시스템에서 발생하는 문제이고 Exception은 구현한 로직에서 발생하는 문제이다.

컴파일 시점에 발생하는 에러를 컴파일 에러라고하고 런타임 시점에 발생하는 에러를 런타임 에러라고 한다.

런타임 시점에서 발생하는 에러 중 시스템 레벨에서 발생한 에러가 아닌 로직 내에서 발생한 에러, 즉 처리 가능한 에러를 예외라고 한다.

RuntimeException이란?

RuntimeException은 Unchecked Exception이다. RuntimeException을 제외한 Exception은 Checked Exception이다.

Checked Exception은 명시적으로 예외처리를 해야한다.

커스텀한 예외 만드는 방법

Exception 클래스를 상속받아 커스텀한 예외를 만들 수 있다.

class MyException extends RuntimeException{
	...
}

0개의 댓글