자바 5.0 프로그래밍
chapter 09 : 예외처리
학습목표 오류 ( Error )란? 시스템 정의 예외처리 사용자 정의 예외처리 Assertion try/catch 문 throws 문 사용자 정의 예외처리 Assertion
정의 자바언어의 오류 종류 치명적인 오류 가벼운 오류 오류 ( Error ) 프로그램 수행시 의도하지 않게 발생되는 문제점 프로그래머가 해결할 수 없는 오류 JVM 에 의존해서 해결한다. 예외 ( Exception ) 가벼운 오류 프로그래머가 해결할 수 있는 오류 프로그래밍에 의존해서 해결한다.
정의 특징 예외 처리 ( Exception Handling ) 예외가 발생되었을 때 정상종료 되도록 처리하는 작업. 예외가 발생하면 자바언어는 예외를 모두 객체로 인식한다. 발생한 예외를 예외처리 할 수 있도록 Exception 클래스가 제공 된다.
컴파일러가 명시적으로 예외처리를 요구하지 않는다. 예외 처리 ( Exception Handling ) 컴파일 처리방식에 따른 분류 Checked Exception 컴파일러가 명시적으로 예외처리를 요구한다. 예외처리를 안하면 컴파일 에러가 발생된다. IOException , SQLException Unchecked Exception 컴파일러가 명시적으로 예외처리를 요구하지 않는다. 예외처리보다는 디버깅으로 해결한다. RuntimeException
API에서 제공된 Exception 클래스로 예외처리 예외 처리 ( Exception Handling ) Exception 클래스에 따른 분류 시스템 정의 Exception API에서 제공된 Exception 클래스로 예외처리 IOException , SQLException , RuntimeException 사용자 정의 Exception 개발자가 필요에 의해서 만든 Exception 클래스로 예외처리. 반드시 Exception 클래스를 상속받아야 한다.
3: 객체생성한 Exception을 예외 발생된 곳으로 던진다. 예외 처리 ( Exception Handling ) 예외처리 기본개념 … //예외발생 …. JVM 3: 객체생성한 Exception을 예외 발생된 곳으로 던진다. ( throw ) 1:예외가 발생되면 JVM 에게 예외를 던진다. 2: JVM은 예외를 분석하여 알맞은 Exception 클래스를 객체생성 한다. 4: 발생된 곳에서 예외처리를 안하면 프로그램은 비정상 종료된다.
예외처리 방법 try/catch 문 이용 예외 처리 ( Exception Handling ) try / catch 문 이용 throws 이용 try/catch 문 이용
예외처리 안 했을 경우 예제 JVM 예외 처리 ( Exception Handling ) 3: 객체생성한 Exception을 예외 발생된 곳으로 던진다. ( throw ) 4: 발생된 곳에서 예외처리를 안하면 프로그램은 비정상 종료된다. 2: JVM은 예외를 분석하여 알맞은 Exception 클래스를 객체생성 한다.이 예제에서는 ArrayIndexOutOfBoundsException 이 발생.
예외처리 했을 경우 예제 JVM 예외 처리 ( Exception Handling ) 2: JVM은 예외를 분석하여 알맞은 Exception 클래스를 객체생성 한다.이 예제에서는 ArrayIndexOutOfBoundsException 이 발생. 3: 객체생성한 Exception을 예외 발생된 곳으로 던진다. ( throw ) 4 : JVM이 던진 Exception 객체를 catch 블록이 잡는다. 5 : 예외처리를 해서 프로그램이 정상종료 된다.
다중 catch 문 예외 처리 ( Exception Handling ) 많아진다. catch문은 순차적으로 실행되며 발생된 예외와 일치하는 catch 문을 수행한다.
다중 catch 문 사용시 주의사항 예외 처리 ( Exception Handling ) Exception 계층구조에서 상위클래스는 나중에 catch 처리한다. 하위클래스 상위클래스
예외 처리 ( Exception Handling ) 예제
finally 문 예외 처리 ( Exception Handling ) 예외 발생여부와 상관없이 반드시 수행되는 문. file 및 데이터베이스 접근시 유용하게 사용된다.
예외 처리 ( Exception Handling ) 예제
throws 이용 예외 처리 ( Exception Handling ) 메소드 호출 메커니즘
throws 이용 방법 예외 처리 ( Exception Handling ) 예외가 발생한 곳에서 예외처리를 안하고 호출한 곳으로 발생된 예외를 떠 넘긴다. 적어도 main메소드에서는 try/catch 예외처리를 해야한다. RuntimeException 계열은 throws 할 필요없다. 방법 메소드 선언시 throws Exception클래스 를 지정한다. public void b() throws Exception { .. }
예외 처리 ( Exception Handling ) 예제
명시적 예외클래스 생성 발생방법 용도 주의사항 예외 처리 ( Exception Handling ) 명시적( 강제적)으로 예외를 발생 시킬수 있다. 발생방법 throw new Exception클래스( [args] ); 용도 사용자 정의 Exception 클래스로 예외처리시 사용 필요에 의한 Exception 클래스 예외발생시 사용 주의사항 반드시 try/catch 로 예외처리를 해주어야 한다.
예외 처리 ( Exception Handling ) 예제
정의 작성순서 사용자 정의 Exception 개발자가 필요에 의해서 만든 Exception 클래스를 의미한다.
작성순서 사용자 정의 Exception 2. 프로그램에서 특정 조건에 해당되는 경우 Exception를 명시적으로 발생시킨다. 명시적으로 발생시킨다. 3. 발생된 Exception 을 예외처리한다.
boolean 값이 false 인 경우에는 AssertError가 발생되어 Assertion 정의 어떤 내용에 대해서 확실한 단언을 할 때 사용하는 단어. 용도 프로그램의 논리흐름상 특정변수의 값은 반드시 어떤 값이 되어야 한다는 점을 이야기할 때 사용된다. 디버깅 용으로 사용된다. 실행시에 화면출력 없이 변수나 코드의 흐름에 대해서 검증할 수 있는 코드작성이 가능하다. 방법 assert [boolean 식]; boolean 값이 false 인 경우에는 AssertError가 발생되어 비정상 처리된다. assert [boolean 식]: 실행문 ; boolean 값이 false 인 경우에 실행문이 실행된다.
컴파일 실행 Assertion 기본적으로 Assertion 기능이 수행되지 않도록 되어있다. javac –source 1.5 파일명.java 실행 java –ea 파일명 -ea : Enable Assertions라고 해서 단언기능을 사용 가능하게 하는 옵션이다. -da : Disable Assertions라고 해서 단언기능을 사용 못하게 하는 옵션이다.
Assertion 예제
요약 정리 try/catch throws finally 사용자 정의 Exception 클래스 throw Assertion