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