-
[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
위 자바 공식 문서를 참고하면 다양한 에러 클래스 정보를 확인할 수 있다.
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
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 제네릭 클래스 및 상속 (0) 2022.02.11 [Java] 자바 예외 처리 - 예외 떠넘기기(throws) (0) 2022.02.10 [Java] 자바 여러 타입을 가지는 배열 만들기 (0) 2022.02.10 [Java] 자바 문자열 비교 (0) 2022.02.10 [Java] 익명클래스 (0) 2022.02.10