# Error - 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미 # Exception - 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다 - 자바는 객체지향 언어이기 때문에 프로그램에서 발생하는 예외들을 클래스의 형태로 제공한다 - *check exception*, *Unchecked exception* 으로 나누어짐 ## Check exception - 파일 입출력(IOException), db연동(SQLException) ## Unchecked exception - 위 두가지 제외하고 전부 # try-catch 사용 방법 *기본 예시* ```java try { //try 블록안에 예외가 발생할 수 있는 코드 명시 System.out.println(4/0); } catch (ArithmeticException e) { // catch 블럭안에 예외 발생시 처리할 코드 명시 System.out.println("0으로 나눌 수 없습니다"); } ``` *Exception 클래스를 사용하여 모든 예제를 처리* ```java try { //try 블록안에 예외가 발생할 수 있는 코드 명시 System.out.println(4/0); } catch (Exception e) { // Exception 클래스는 모든 예외를 처리한다 System.out.println("0으로 나눌 수 없습니다"); } ``` *다중 예외 처리 예시* ```java Scanner sc = new Scanner(System.in); try { System.out.print("input number >> "); int num1 = sc.nextInt(); System.out.print("input number >> "); int num2 = sc.nextInt(); System.out.println(num1 / num2); } catch (ArithmeticException e) { System.out.println("0을 나눌수 없습니다"); } catch (InputMismatchException e) { System.out.println("숫자만 입력 가능합니다"); } ``` # finally - 예외 발생 유무와 상관없이 실행되는 구문이며 생략할 수 있다 - 예외처리를 할 때 예외와 상관없이 반드시 처리해야 하는 구문들을 작성할 때 사용됨 *finally 사용 예시* ```java title:finally Scanner sc = new Scanner(System.in); try { System.out.println("점수를 입력하세요 : "); int score = sc.nextInt(); if(score >= 65 ) { System.out.println("합격"); } else { System.out.println("불합격"); } } catch (Exception e) { System.out.println("잘못 입력하셨습니다"); } finally { System.out.println("프로그램 종료"); } ```