ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 예외 처리(try-catch문)
    프로그래밍 언어/Java 2022. 2. 10. 17:19

    0으로 나누는 경우

    public class exceptiontest {
    
    	public static void main(String[] args) {
    		int a = 10;
    		int b = 0;
    		int c = a / b;
    	}
    }

    위의 코드를 실행해보자.

    Exception in thread "main" java.lang.ArithmeticException: / by zero
    	at day03.exceptiontest.main(exceptiontest.java:10)

    정수를 0으로 나누는 경우 ArithemeticException 에러 로그와 함께 실행이 중단된다.

     

    예외 발생 시 실행이 중단되지 않도록 처리

    try~carch 문으로 예외 발생 시 Exception 객체로 에러 메시지를 출력하도록 한다. 

    public class exceptiontest {
    
    	public static void main(String[] args) {
    		try {
    			int a = 10;
    			int b = 0;
    			int c = a / b;
    		} catch(ArithmeticException e) {	// Exception e, 상위 클래스로 선언해도 된다.
    			System.out.print(e.getMessage());
    			System.out.println(" 에러가 발생했습니다.");
    		}
    	}
    }

    실행 결과 정상적으로 동작한다. 이 때, 프로그램은 중단되지 않는다.

    위에서 출력되었던 에러로그는 e.getMessage()를 통해서 출력할 수 있다.

    / by zero 에러가 발생했습니다.

     

    배열의 범위를 초과했을 때

    배열의 범위를 초과하는 에러를 발생시킬 경우

    public class exceptiontest {
    
    	public static void main(String[] args) {
    		try {
    			int arr[] = new int[2];
    			arr[2] = 10;
    		} catch(ArrayIndexOutOfBoundsException e) {
    			System.out.print(e.getMessage());
    			System.out.println(" 에러가 발생했습니다.");
    		}
    	}
    }

    ArrayIndexOutOfBoundsException 에러를 발생시킨다.

    즉, 에러의 종류에 따라서 다른 에러 클래스가 사용되는 것을 확인할 수 있다.

    Index 2 out of bounds for length 2 에러가 발생했습니다.

     

    에러 관련 클래스

    https://docs.oracle.com/javase/10/docs/api/index.html?overview-summary.html

     

    Java SE 10 & JDK 10

     

    docs.oracle.com

    위 자바 공식 문서를 참고하면 다양한 에러 클래스 정보를 확인할 수 있다.

    Finally

    에러가 발생하던 안하던 실행되는 코드 영역을 finally 영역에 구현한다.

    public class exceptiontest {
    
    	public static void main(String[] args) {
    		try {
    			int arr[] = new int[2];
    			arr[2] = 10;
    		} catch(ArrayIndexOutOfBoundsException e) {
    			System.out.print(e.getMessage());
    			System.out.println(" 에러가 발생했습니다.");
    		} finally {
    			System.out.println("finally");
    		}
    	}
    }

    위 코드를 실행하면 catch 부분이 실행되고 finally 부분도 실행이 된다.

    Index 2 out of bounds for length 2 에러가 발생했습니다.
    finally
Designed by Tistory.