27
자자 자자 5.0 5.0 자자자자자 자자자자자

자바 5.0 프로그래밍

Embed Size (px)

DESCRIPTION

자바 5.0 프로그래밍. chapter 09 : 예외처리. 학습목표. 오류 ( Error ) 란 ? 시스템 정의 예외처리. try/catch 문 throws 문. 사용자 정의 예외처리 Assertion. 오류 ( Error ). 정의. 프로그램 수행시 의도하지 않게 발생되는 문제점. 자바언어의 오류 종류. 오류 ( Error ). 치명적인 오류 프로그래머가 해결할 수 없는 오류 JVM 에 의존해서 해결한다. 예외 ( Exception ). 가벼운 오류 - PowerPoint PPT Presentation

Citation preview

Page 1: 자바  5.0  프로그래밍

자바 자바 5.0 5.0 프로그래밍프로그래밍

Page 2: 자바  5.0  프로그래밍

chapter 09chapter 09 : :

예외처리 예외처리

Page 3: 자바  5.0  프로그래밍

학습목표학습목표

오류 오류 ( Error )( Error ) 란란 ??

시스템 정의 예외처리시스템 정의 예외처리

try/catch try/catch 문문throws throws 문문

사용자 정의 예외처리사용자 정의 예외처리

Assertion Assertion

Page 4: 자바  5.0  프로그래밍

프로그램 수행시 의도하지 않게 발생되는 문제점프로그램 수행시 의도하지 않게 발생되는 문제점

오류 오류 ( Error )( Error )

정의정의

자바언어의 오류 종류 자바언어의 오류 종류 오류 오류 ( Error )( Error ) 치명적인 오류치명적인 오류 프로그래머가 해결할 수 없는 오류프로그래머가 해결할 수 없는 오류 JVM JVM 에 의존해서 해결한다에 의존해서 해결한다 ..

예외 예외 ( Exception )( Exception ) 가벼운 오류가벼운 오류 프로그래머가 해결할 수 있는 오류프로그래머가 해결할 수 있는 오류 프로그래밍에 의존해서 해결한다프로그래밍에 의존해서 해결한다 ..

Page 5: 자바  5.0  프로그래밍

예외가 발생되었을 때 예외가 발생되었을 때 정상종료정상종료 되도록 처리하는 작업 되도록 처리하는 작업 ..

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

정의정의

특징 특징 예외가 발생하면 자바언어는 예외를 모두 객체로 인식한다예외가 발생하면 자바언어는 예외를 모두 객체로 인식한다 ..발생한 예외를 예외처리 할 수 있도록 발생한 예외를 예외처리 할 수 있도록 Exception Exception 클래스가 제공클래스가 제공

된다된다 ..

Page 6: 자바  5.0  프로그래밍

Checked ExceptionChecked Exception

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

컴파일 처리방식에 따른 분류컴파일 처리방식에 따른 분류

컴파일러가 명시적으로 예외처리를 요구한다컴파일러가 명시적으로 예외처리를 요구한다 ..

예외처리를 안하면 컴파일 에러가 발생된다예외처리를 안하면 컴파일 에러가 발생된다 ..

IOException , SQLException IOException , SQLException

Unchecked ExceptionUnchecked Exception

컴파일러가 명시적으로 예외처리를 요구하지 않는다컴파일러가 명시적으로 예외처리를 요구하지 않는다 ..

예외처리보다는 디버깅으로 해결한다예외처리보다는 디버깅으로 해결한다 ..

RuntimeException RuntimeException

Page 7: 자바  5.0  프로그래밍

시스템 정의 시스템 정의 ExceptionException

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

Exception Exception 클래스에 따른 분류클래스에 따른 분류

APIAPI 에서 제공된 에서 제공된 Exception Exception 클래스로 예외처리클래스로 예외처리

IOException , SQLException , RuntimeException IOException , SQLException , RuntimeException

사용자 정의 사용자 정의 ExceptionException

개발자가 필요에 의해서 만든 개발자가 필요에 의해서 만든 Exception Exception 클래스로 예외처리클래스로 예외처리 ..

반드시 반드시 Exception Exception 클래스를 상속받아야 한다클래스를 상속받아야 한다 . .

Page 8: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예외처리 기본개념예외처리 기본개념

……

//// 예외발생예외발생

……..

JVM

33:: 객체생성한 객체생성한 ExceptionException 을 예외 발생된 곳으로 던진다을 예외 발생된 곳으로 던진다 ..

( throw )( throw )

11:: 예외가 발생되면 예외가 발생되면 JVM JVM 에게 예외를 던진다에게 예외를 던진다 ..

22: JVM: JVM 은 예외를 분석하여 알맞은은 예외를 분석하여 알맞은

Exception Exception 클래스를 객체생성 한다클래스를 객체생성 한다 ..44:: 발생된 곳에서 예외처리를 안하면 프로그램은 비정상발생된 곳에서 예외처리를 안하면 프로그램은 비정상

종료된다종료된다 ..

Page 9: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예외처리 방법예외처리 방법

try / catch try / catch 문 이용문 이용throws throws 이용이용

try/catch try/catch 문 이용문 이용

Page 10: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예외처리 안 했을 경우 예제예외처리 안 했을 경우 예제

JVM

11:: 예외가 발생되면 예외가 발생되면 JVM JVM 에게 예외를 던진다에게 예외를 던진다 ..

33: : 객체생성한 객체생성한 ExceptionException 을 예외 발생된 곳으로 던진다을 예외 발생된 곳으로 던진다 . ( throw ). ( throw )

44: : 발생된 곳에서 예외처리를 안하면 프로그램은 비정상 종료된다발생된 곳에서 예외처리를 안하면 프로그램은 비정상 종료된다 ..

22: JVM: JVM 은 예외를 분석하여 알맞은 은 예외를 분석하여 알맞은 Exception Exception 클래스를 객체생성 한다클래스를 객체생성 한다 ..이 예제에서는 이 예제에서는 ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException 이 발생이 발생 ..

Page 11: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예외처리 했을 경우 예제예외처리 했을 경우 예제

JVM

11:: 예외가 발생되면 예외가 발생되면 JVM JVM 에게 예외를 던진다에게 예외를 던진다 ..

22: JVM: JVM 은 예외를 분석하여 알맞은 은 예외를 분석하여 알맞은 Exception Exception 클래스를 객체생성 한다클래스를 객체생성 한다 ..이 예제에서는 이 예제에서는 ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException 이 발생이 발생 ..

33: : 객체생성한 객체생성한 ExceptionException 을 예외 발생된 곳으로 던진다을 예외 발생된 곳으로 던진다 . ( throw ). ( throw )

44 : JVM : JVM 이 던진 이 던진 Exception Exception 객체를 객체를 catch catch 블록이 잡는다블록이 잡는다 ..

55 : : 예외처리를 해서 프로그램이 정상종료 된다예외처리를 해서 프로그램이 정상종료 된다 ..

Page 12: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

다중 다중 catch catch 문문실행문이 여러 개인 경우 발생할 수 있는 실행문이 여러 개인 경우 발생할 수 있는 Exception Exception 종류도 종류도

많아진다많아진다 ..catchcatch 문은 순차적으로 실행되며 발생된 예외와 일치하는문은 순차적으로 실행되며 발생된 예외와 일치하는

catch catch 문을 수행한다문을 수행한다 ..

Page 13: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

다중 다중 catch catch 문 사용시 주의사항문 사용시 주의사항Exception Exception 계층구조에서 상위클래스는 나중에 계층구조에서 상위클래스는 나중에 catch catch 처리한다처리한다 ..

하위클래스하위클래스

상위클래스상위클래스

Page 14: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예제예제

Page 15: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

finally finally 문문예외 발생여부와 상관없이 반드시 수행되는 문예외 발생여부와 상관없이 반드시 수행되는 문 ..file file 및 데이터베이스 접근시 유용하게 사용된다및 데이터베이스 접근시 유용하게 사용된다 ..

Page 16: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예제예제

Page 17: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

throws throws 이용이용

메소드 호출 메커니즘 메소드 호출 메커니즘

throws throws 기본개념은 메소드 호출 메커니즘을 이용한다기본개념은 메소드 호출 메커니즘을 이용한다 ..

Page 18: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

throws throws 이용이용예외가 발생한 곳에서 예외처리를 안하고 호출한 곳으로 발생된예외가 발생한 곳에서 예외처리를 안하고 호출한 곳으로 발생된

예외를 떠 넘긴다예외를 떠 넘긴다 ..적어도 적어도 mainmain 메소드에서는 메소드에서는 try/catch try/catch 예외처리를 해야한다예외처리를 해야한다 ..RuntimeException RuntimeException 계열은 계열은 throws throws 할 필요없다할 필요없다 ..

방법방법메소드 선언시 메소드 선언시 throws Exceptionthrows Exception 클래스 를 지정한다클래스 를 지정한다 ..

public void b() throws Exception { .. }public void b() throws Exception { .. }

Page 19: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예제예제

Page 20: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

명시적 예외클래스 생성명시적 예외클래스 생성명시적명시적 ( ( 강제적강제적 )) 으로 예외를 발생 시킬수 있다으로 예외를 발생 시킬수 있다 ..

발생방법발생방법throw new Exceptionthrow new Exception 클래스클래스 ( [args] );( [args] );

용도용도사용자 정의 사용자 정의 Exception Exception 클래스로 예외처리시 사용클래스로 예외처리시 사용필요에 의한 필요에 의한 Exception Exception 클래스 예외발생시 사용클래스 예외발생시 사용

주의사항주의사항반드시 반드시 try/catch try/catch 로 예외처리를 해주어야 한다로 예외처리를 해주어야 한다 ..

Page 21: 자바  5.0  프로그래밍

예외 처리 예외 처리 ( Exception Handling )( Exception Handling )

예제예제

Page 22: 자바  5.0  프로그래밍

사용자 정의 사용자 정의 Exception Exception

정의정의개발자가 필요에 의해서 만든 개발자가 필요에 의해서 만든 Exception Exception 클래스를 의미한다클래스를 의미한다 ..

작성순서작성순서1. Exception 1. Exception 클래스를 상속받는 사용자정의 클래스를 선언한다클래스를 상속받는 사용자정의 클래스를 선언한다 ..

Page 23: 자바  5.0  프로그래밍

사용자 정의 사용자 정의 Exception Exception

작성순서작성순서2. 2. 프로그램에서 특정 조건에 해당되는 경우 프로그램에서 특정 조건에 해당되는 경우 ExceptionException 를를

명시적으로 발생시킨다명시적으로 발생시킨다 ..3. 3. 발생된 발생된 Exception Exception 을 예외처리한다을 예외처리한다 ..

Page 24: 자바  5.0  프로그래밍

Assertion Assertion

정의정의어떤 내용에 대해서 확실한 단언을 할 때 사용하는 단어어떤 내용에 대해서 확실한 단언을 할 때 사용하는 단어 ..

용도용도프로그램의 논리흐름상 특정변수의 값은 반드시 어떤 값이 프로그램의 논리흐름상 특정변수의 값은 반드시 어떤 값이 되어야 한다는 점을 이야기할 때 사용된다되어야 한다는 점을 이야기할 때 사용된다 ..디버깅 용으로 사용된다디버깅 용으로 사용된다 ..실행시에 화면출력 없이 변수나 코드의 흐름에 대해서 검증할실행시에 화면출력 없이 변수나 코드의 흐름에 대해서 검증할

수 있는 코드작성이 가능하다수 있는 코드작성이 가능하다 ..

방법방법assert [boolean assert [boolean 식식 ];];

boolean boolean 값이 값이 false false 인 경우에는 인 경우에는 AssertErrorAssertError 가 발생되어 가 발생되어

비정상 처리된다비정상 처리된다 . . assert [boolean assert [boolean 식식 ]: ]: 실행문 실행문 ;;

boolean boolean 값이 값이 false false 인 경우에 실행문이 실행된다인 경우에 실행문이 실행된다 ..

Page 25: 자바  5.0  프로그래밍

Assertion Assertion

컴파일컴파일기본적으로 기본적으로 Assertion Assertion 기능이 수행되지 않도록 되어있다기능이 수행되지 않도록 되어있다 ..

javac –source 1.5 javac –source 1.5 파일명파일명 .java.java

실행실행java –ea java –ea 파일명파일명

-ea : Enable Assertions 라고 해서 단언기능을 사용 가능하게 하는 옵션이다 .-da : Disable Assertions 라고 해서 단언기능을 사용 못하게 하는 옵션이다 .

Page 26: 자바  5.0  프로그래밍

Assertion Assertion

예제예제

Page 27: 자바  5.0  프로그래밍

요약 정리요약 정리

try/catchtry/catch

throwsthrows

finallyfinally

사용자 정의 사용자 정의 Exception Exception 클래스클래스

throwthrow

AssertionAssertion