본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 예외 처리

by E145 2021. 1. 20.
반응형

예외 처리

 

예외 처리 란?

 

 - 실행 중에 생길 수 있는 '예외적인 상황'을 처리할 수 있는 방법.

 

 - 특정 메소드를 호출할 때 예외가 발생할 수 있다는 것을 알고 있다면 문제에 대비할 수 있다.

 


 

예외 처리 방법

 

 - try 블록에 예외가 발생할 가능성이 있는 부분을 넣는다.

 

 - catch 블록에 예외적인 상황이 일어났을 때 일을 지정하기 위한 부분을 넣는다.

 

 - catch 블록을 여러 개 사용할 때는 작은 것부터 큰 것으로 나열해야 한다.

   상속 트리에서 위로 올라갈 수록 큰 것이다.

   // catch(Exception e)를 가장 먼저 사용하면 안된다.

 

import java.util.*;

public class test {
    public static void main(String[] args){
        try{
            staticTest.test();
        }
        catch (ArithmeticException e){
            System.out.println(e);
            System.out.println("예외 발생 : 0으로 나누기");
        }
    }
}

class staticTest{
    static final int a=30;
    static void test(){
        int ab = 10/0;
    }
}

실행 결과

 


 

 

예외 던지기

 

 - 직접 예외를 만들어 던져서 예외를 발생시킨다.

 

 - throw 키워드를 이용하여 예외를 던진다.

 

 - 예외는 언제나 그 메소드를 호출한 곳으로 던져진다.

 

 - 예외를 던지는 메소드에서는 반드시 그 메소드에서 예외를 던질 수 있다는 것을 선언해야 한다.

 

import java.util.*;

public class test {
    public static void main(String[] args){
        exceptionTest et=new exceptionTest();
        try{
            et.test();
        }
        catch (Exception e){
            System.out.println(e);
            System.out.println("예외 던지기");
        }
    }
}

class exceptionTest{
    static final int a=30;
    public void test() throws Exception{
        throw new Exception();
    }
}

 

실행 결과

 


 

finally

 

 - 예외 발생 여부와 상관없이 무조건 실행할 코드는 finally 블록에 넣는다.

   (try 블록이나 catch 블록에서 return을 해도, finally 블록은 실행된다.)

 

 - try 블록 실패 시 catch 블록 실행이 되고, 그 이후에 finally 블록이 실행된다.

 

 - try 블록 성공 시, catch 블록은 건너 뛰고,  그 이후에 finally 블록이 실행된다.

 

 - try 또는 catch 블록에 return 선언문이 있어도 finally 블록은 실행된다.

 

import java.util.*;

public class test {
    public static void main(String[] args){
        exceptionTest et=new exceptionTest();
        try{
            et.test();
        }
        catch (Exception e){
            System.out.println("예외 던지기");
        }
        finally {
            System.out.println("무조건 실행");
        }
    }
}

class exceptionTest{
    static final int a=30;
    public void test() throws Exception{
        throw new Exception();
    }
}

 

실행 결과

 

 

 

 

 

 

반응형

댓글