티스토리 뷰
예외처리(Exception) 이란? 예외가 발생하는지 검사하고 예외가 발생할 경우
프로그램이 비정상 종료가 되는 것을 방지하기 위해 처리하는 것
* 필수는 아니지만 강력하게 권고하는 프로그래밍 스킬입니다.
예외의 종류
- 예외의 종류에 따라 처리되지 않아도 되는 예외가 있다.
예외의 종류 |
설명 |
컴파일러 체크 |
Error |
자바 가상 기계 안에서 오류가 발생시 생성된다. |
X |
RuntimeException |
프로그래밍 버그, 논리오류에서 기인한다. |
X |
CheckedException |
Error와 RuntimeException을 제외한 나머지 예외이다. 회복 될 수 있는 예외이므로 프로그램은 반드시 처리해야 한다. (처리가 되지 않을 경우 컴파일 오류 발생) |
O |
분류 |
예외 타입(예외 클래스) |
예외 발생 경우 |
RuntimeException |
ArithmeticException |
어떤 수를 0으로 나누었을 경우 |
NullPointerException |
null 객체를 참조했을 경우 |
|
ClassCastException |
변환할 수 없는 타입으로 객체를 변환했을 경우 |
|
NegativeArraySizeException |
배열의 크기가 음수 값인 경우 |
|
OutOfMemoryException |
사용 가능한 메로리가 부족한 경우 |
|
NoClassDefFoundException |
원하는 클래스를 찾지 못했을 경우 |
|
ArrayIndexOutOfBoundsException |
배열을 참조하는 인덱스가 잘못됐을 경우 |
|
NumberFormatException |
문자열이 나타내는 숫자와 일치하지 않은 타입의 숫자로 변환했을 경우 |
|
InputMismatchException |
정수로 입력해서 문자를 입력했을 경우 |
|
IOException |
입출력 동작 실패, 인터럽트 발생한 경우 |
try - catch - finally 문법
try{ 예외가 발생할 수 있는 코드 } catch(예외타입클래스 예외명){ 예외를 처리하는 코드 } finally{ 예외 발생 여부와 상관없이 무조건 실행된다. (생략가능) }
키워드 | 설명 |
throws |
- 예외를 발생할 가능성이 있다는 의미를 가지고 있다. |
thorw |
- "예외를 던지다, 발생시키다" 라는 의미를 가지고 있다. - 예외객체를 생성하는 키워드이다. - 강제로 예외를 발생시킬 수 있다. - Throw 문장은 하나의 인수, Throwable만을 요구한다. ex) throw someThrowableObject |
예외처리에 대해 실습을 통해 공부하겠습니다.
import java.util.InputMismatchException; import java.util.Scanner; public class ExampleException { public static void main(String[] args) { // 사용자의 키보드로부터 입력 받게 해주는 Scanner Scanner scan = new Scanner(System.in); int num1 = 10; int num2 = 2; // 예회처리 try ~ catch ~ finally // try: 예외 발생 가능 문장 // catch: try에서 발생한 예외를 처리하는 구간. 여러개가 올 수 있다. -> else if와 비슷 // finally: try에서 모든 코드가 제대로 실행되던, catch에서 오류가 처리되던 무조건 실행되어야 할 문장 // 보통 try가 끝날 때 실행할 문장과 catch가 끝날 때 실행할 문장이 중복 될 경우가 많이 사용된다. try { num2 = scan.nextInt(); int result = num1 / num2; // 예외를 던지면 System.out.println("result: " + result); // catch에서 받는다. } catch (ArithmeticException e) { } catch (Exception e) { // 1) Exception e = new ArimeticException(); -> UpCasting // 2) Exception e = new InputMispatchException(); ->UpCasting e.printStackTrace(); // 어떤 예외가 발생하더라도 한번에 처리가 가능하다. }finally{ System.out.println("프로그램 종료"); } // 예외객체 활용 // getMessage() => 어떤 에러가 발생하였는지 알려준다. // printStackTrace()=> 에러 위치 및 에러 내용을 상세하게 보여준다. } }
'프로그래밍 > Java' 카테고리의 다른 글
자바 ! 객체 타입 판별, 배열 ( instanceof , Array, for - each) (0) | 2017.05.10 |
---|---|
자바 ! 사용자 정의 예외처리 ( Exception, RuntimeException, try ~ catch ~ finally ) (0) | 2017.05.09 |
자바 ! 다형성 ( Polymorphism , Upcasting , Downcasting ) (0) | 2017.05.05 |
자바 ! Object 클래스 ( toString(), equals() 메소드 등..) (0) | 2017.05.01 |
자바 ! 인터페이스 (interface) (0) | 2017.04.30 |