Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.

Slides:



Advertisements
Similar presentations
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
Advertisements

어서와 Java는 처음이지! 제3장선택과 반복.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
Java Seminar 6.
Programming for the java Virtual machine
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
명품 JAVA Essential.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제 12장 예외 처리 12.1 설계 쟁점 12.2 PL/I의 ON-조건 12.3 Ada의 예외 처리
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
10장 예외 Lab 10-1.
명품 JAVA Programming.
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
5 익셉션 처리.
컴퓨터공학실습(I) 3주 인공지능연구실.
[INA470] Java Programming Youn-Hee Han
직렬화와 역직렬화에 대하여 직렬화 가능 클래스의 선언 방법
제7장 제어구조 I – 식과 문장.
음악 재생 프로그램 예외 처리 방법 try/catch 블록 예외 선언 방법
[ 단원 08 ] 예외처리와 스레드.
메소드 호출과 힙 원격 메소드 호출 서블릿 엔터프라이즈 자바 빈즈
Power Java 제4장 자바 프로그래밍 기초.
Java 12장. 입출력 public class SumTest {
8장 자바 입출력.
Lesson 3. 입출력과 제어문.
Power Java 제15장 예외 처리 (Exception Handling).
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
AOP 개념 및 Spring의 AOP 기능.
10장 예외 (Exceptions).
Lesson 9. 예외처리.
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
명품 JAVA Essential.
명품 JAVA Programming 제 16 장 네트워크.
명품 Java Programming.
최용술 장 Thread 최용술
명품 JAVA Essential.
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
Hadoop 김연왕
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Android Coding Convention
주소록 프로그램.
Network Programming(1)
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
예외 처리 및 스레드 클래스 활용 학습목표 오류 발생 시 무조건 정지하지 않고 경우에 따라서 예외 처리하여 정상 작동을 하는 경우의 Exception 클래스에 대해서 학습한다. 멀티미디어 파일에서 동시에 다운로드 받는 효과를 갖을 수 있는 스레드(Thread) 클래스에.
Java 9장. 인터페이스와 예외처리 public class SumTest {
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
DataScience Lab. 박사과정 김희찬 (월)
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
C# 10장. 참조형.
Java 5장. 객체지향 개념 public class SumTest {
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
임베디드 프로그래밍 Lecture #
Presentation transcript:

Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리

7.1 예외의 개요 예외 : 프로그램 실행 중에 발생하는 예기치 않은 사건 예외가 발생하는 예 정수를 0으로 나누는 경우 배열의 첨자가 음수 또는 범위를 벗어나는 경우 부적절한 형 변환이 일어나는 경우 입출력을 위한 파일이 없는 경우 등 자바 언어는 프로그램에서 예외를 처리할 수 있는 기법을 제공

7.1 예외의 개요 예외가 발생되는 예 class Error { public static void main(String[] args) { x(); // x() 메소드 호출 } static void x() { y(); // y() 메소드 호출 static void y() { z(); // z() 메소드 호출 static void z() { int i = 1; int j = 0; System.out.println(i/j); // 1을 0으로 나눈다. 예외 발생 } // JVM의 묵시적인 예외 처리기 가동 에러 메시지 java.lang.ArithmeticException: / by zero at Error.z(Error.java:14) at Error.y(Error.java:9) at Error.x(Error.java:6) at Error.main(Error.java:3)

7.2 예외 관련 클래스 자바는 예외를 객체로 취급 예외 관련 클래스를 java.lang 패키지에서 제공 예외 관련 클래스 : 그림 7-1 참조 자바 프로그램에서는 Error, RuntimeException 클래스의 하위 클래스들을 제외한 모든 예외를 처리하여야 한다 일반적으로 Error, RuntimeException 클래스(하위 클래스 포함)들과 연관된 예외는 프로그램에서 처리하지 않는다 이유 : 예외를 처리하여 얻는 이득보다 예외를 처리하기 위한 노력이 너무 크기 때문

7.2 예외 관련 클래스 예외 클래스 계층구조 Object Throwable Error Exception LinkageError ThreadDeath VirtualMachineError RuntimeException CloneNotSupportedException IllegalAccessException InstantiationException InterruptedException NoSuchMethodException ClassNotFoundException IOException EOFException FileNotFoundException InterruptedIOException ClassCastException ArithmeticException NegativeArraySizeException NullPointException ArrayStoreException IndexOutOfBoundException (ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException) SecurityException 예외 클래스 계층구조 (프로그램에서 처리하지 않고, JVM에게 예외처리를 맡긴다)

7.2 예외 관련 클래스 Exception 클래스의 하위 클래스 클래스 설명 NoSuchMethodException 메소드가 존재하지 않을 때 ClassNotFoundException 클래스가 존재하지 않을 때 CloneNotSupportedException 객체의 복제가 지원되지 않는 상황에서의 복제 시도 IllegalAccessException 클래스에 대한 부정 접근 InstantiationException 추상클래스나 인터페이스로부터 객체 생성하려 할 때 InterruptedException 스레드가 인터럽트 되었을 때 RuntimeException 실행시간 예외가 발생할 때

7.2 예외 관련 클래스 RuntimeException 클래스의 하위 클래스 클래스 설명 ArithmeticException 0으로 나누는 등의 산술적인 예외 NegativeArraySizeException 배열의 크기를 지정할 때 음수의 사용 NullPointerException null 객체의 메소드나 멤버 변수에 접근할 때 IndexOutOfBoundException 배열이나 스트링의 범위를 벗어난 접근. 하위클래스로 ArrayIndexOutOfBoundsException 클래스 와 StringIndexOutOfBoundsException 클래스를 제공 SecurityException 보안을 이유로 메소드를 수행할 수 없을 때

7.3 예외 처리 Error 와 RuntimeException 클래스 관련 예외는 처리 효율보다는 처리에 드는 노력이 너무 커 자바 프로그램에서 처리하지 않고 JVM에게 처리를 맡긴다 Error 와 RuntimeException 외에 다른 클래스들과 연관된 예외들은 자바 프로그램에서 직접 처리하여야 한다. 예외를 처리하는 방법은 두 가지 예외가 발생된 메소드 내에서 처리하는 방법(try, catch 절 사용) 예외가 발생된 메소드를 호출한 메소드에게 예외의 처리를 넘겨주는 방법(throws 절 사용)

7.3 예외 처리 예외의 발생 import java.io.*; class IOExceptionError { public static void main(String args[]) { FileReader file = new FileReader("a.txt"); // 만일 a.txt 파일이 없다면? int i; while((i = file.read()) != -1) { System.out.print((char)i); } file.close(); 이 프로그램은 컴파일러에 의해 에러가 발생된다. 즉 컴파일러는 a.txt 파일이 없을 경우에 발생하는 예외의 처리를 요구한다

7.3 예외 처리 컴파일러는 앞의 프로그램에 대해 다음과 같은 에러 메시지를 나타낸다 IOExceptionError.java:7: Exception java.io.FileNotFoundException must be caught, or it must be declared in the throws clause of this method. FileReader file = new FileReader("a.txt"); ^ IOExceptionError.java:11: Exception java.io.IOException must be caught, or it must be declared in the throws clause of this method. while((i = file.read()) != -1) 2 errors

7.3 예외 처리 7.3.1 메소드 내에서 예외를 직접 처리하는 방법 - try, catch, finally 블록 사용 예외 처리 방법 중 예외가 발생한 메소드 내에서 직접 처리하는 방법 try { ...... // try 블록 : 예외가 발생할 가능성이 있는 문장을 지정한다 } catch(예외타입1 매개변수1) { ..... // 예외 처리 블록1 : 예외의 종류에 따라 처리하는 처리 블록 ...... catch(예외타입N 매개변수N) { ...... // 예외 처리 블록 N finally { ...... // finally 블록 : 예외의 발생여부와 상관없이 무조건 수행되는 블록

7.3 예외 처리 예외 처리 - try, catch, finally 블록 사용 예 import java.io.*; class IOExceptionError { public static void main(String args[]) { try { // 예외가 발생할 가능성이 있는 문장을 try 블록으로 지정 FileReader file = new FileReader("a.txt"); int i; while((i = file.read()) != -1) { System.out.print((char)i); } file.close(); catch(Exception e) { // 발생된 예외를 처리하는 부분 System.out.println("예외 처리 루틴 : " + e + " 예외 발생");

7.3 예외 처리 예외 처리 - try, catch, finally 블록 사용 예 앞의 프로그램의 실행시 (컴파일러는 에러를 발생시키지 않는다) a.txt 파일이 없다면 프로그램은 예외 처리 루틴을 실행하여 다음과 같은 결과를 출력한다 C:\java\program>java IOExceptionError 예외 처리 루틴 : java.io.FileNotFoundException: a.txt 예외 발생 C:\java\program>

7.3 예외 처리 예제 : ExceptionError1.java 예제 : ExceptionError2.java 예제 : ExceptionSearch.java

7.3 예외 처리 7.3.2 호출 메소드에 예외를 전달하는 방법 - throws 절 사용 메소드 선언 시 다음과 같은 방법으로 지정 public void c() throws 예외클래스[, 예외클래스, ….] 예 void throws-test() throws ArithmeticException, SecurityException, NullPointerException 예제 : ExceptionTrans.java