[Java] Exception(try-catch-finally)

Hee·2024년 4월 2일

Java 복습

목록 보기
32/46
post-thumbnail

Exception 예외처리란?

Exception 정의
프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리할 수 있는데, 이렇게 하는 것을 예외처리라고 한다.


대표적인 Exception, ArithmeticException 예시

public class ExceptionExam{
	public static void main(String[] args){
    	int i = 10;
        int j = 0;
        int k = i / j;
        System.out.println(k);
        System.out.println(main 종료!!);
    }
}
  • 위 코드에서 나누는 수(j)가 0이라 ArithmeticException이 발생하면서 프로그램이 종료된다.
  • Java는 정수를 정수로 나눌 때 0으로 나누면 안 된다. 0으로 나누면 오류가 발생한다.

예외처리 이유
프로그래머는 j라는 변수에 0이 들어올지도 모르는 예외 상황을 미리 예측하고 처리할 수 있다.


예외처리 문법

  • try 블록: 오류가 발생할 예상 부분을 블록으로 감싼다.
  • catch 블록: 발생할 오류와 관련된 Exception을 처리한다.
  • finally 블록: 오류가 발생하든 안하든 무조건 실행된다. 생략가능하다.
public class ExceptionExam{
	public static void main(String[] args){
    	int i = 10;
        int j = 0;
        try{
        	int k = i / j;
        }catch(ArithmeticException e){		// ArithmeticException 라는 예외 객체를 e 라는 참조변수가 가르키고 있음
        	System.out.println("0으로 나눌 수 없습니다. : " + e.toString());		// e라는 참조변수는 toString이라는 메소드를 가지고 있음
        }finally{
        	System.out.println("무조건 실행되는 블록");
        }
    }
}

실행결과
0으로 나눌 수 없습니다.: java.lang.ArithmeticException: / by zero
무조건 실행되는 블록


Exception관한 부가 설명

  • 예외클래스변수명.toString(): 예외의 정보를 알려주는 메소드
  • 예외 처리 안 했을 때는 프로그램이 강제 종료됐는데 catch라는 블록으로 예외를 처리하니, 강제종료되지 않고 잘 실행된다.
  • try 블록에서 여러 종류의 예외가 발생한다면, catch 블록을 여러 개 둘 수 있다.
  • Exception 클래스들은 모두 Exception 클래스를 상속받으므로, 예외 클래스에 Exception을 두게 되면 어떤 오류가 발생하든지 하나의 catch 블록에서 모든 오류를 처리할 수 있다.

0개의 댓글