[INA470] Java Programming Youn-Hee Han

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

SCJP. Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
어서와 Java는 처음이지! 제14장 오류처리하기.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
10장 예외 Lab 10-1.
컴퓨터 프로그래밍 기초 [Final] 기말고사
직렬화와 역직렬화에 대하여 직렬화 가능 클래스의 선언 방법
제7장 제어구조 I – 식과 문장.
음악 재생 프로그램 예외 처리 방법 try/catch 블록 예외 선언 방법
[ 단원 08 ] 예외처리와 스레드.
Power Java 제15장 예외 처리 (Exception Handling).
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
5장. 참조 타입.
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
레퍼런스 타입에 대하여 열거 타입의 선언과 이용
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
14. 예외처리.
25강 예외처리 - 예외란? - 예외처리의 필요성 - 예외처리 문법 (try ~ catch) - 예외처리 문법 (throws)
자바 5.0 프로그래밍.
10장. 예외처리.
자바 5.0 프로그래밍.
[INA470] Java Programming Youn-Hee Han
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
7장 인터페이스와 추상 클래스.
Java 9장. 인터페이스와 예외처리 public class SumTest {
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
Lesson 4. 수식과 연산자.
27장. 모듈화 프로그래밍.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
Power Java 제11장 상속.
C++ Espresso 제11장 예외 처리와 형변환.
JA A V W. 06.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
[ 단원 04 ] 반복과 배열.
Chapter 15. 예외처리(Exception Handling)
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
7 생성자 함수.
6 객체.
Presentation transcript:

[INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr 15. 예외처리 [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr

1. 예외 처리란? 예외(Exception) 예외 처리 잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 발생하는 오류 예외가 발생하는 예 0으로 나누는 것과 같은 잘못된 연산 배열의 인덱스가 한계를 넘는 경우 디스크 및 네트워크에서 발생하는 하드웨어적 에러 예외 처리 C나 C++에서는 대부분의 경우 오류가 발생하면 프로그램이 종료된다. 하지만, 무조건 종료하는 것보다는 프로그램 내에서 오류를 감지하여 각 오류에 대한 처리를 내부적으로 수행할 수 있다. 이렇게 오류를 감지하여 그것에 대한 처리를 하는 것을 예외 처리라고 한다.

1. 예외 처리란? 예외(Exception) 객체와 throw/catch Exception Object throw catch 이 예외 객체는 오류의 정보, 오류의 타입, 오류 발생과 관련된 상태 정보 throw 예외 객체를 생성하여 던지는 것 catch 던져진 객체를 잡아서 처리하는 것

1. 예외 처리란? 예외 발생 예 위 예에서는 ArithmeticException 객체가 던져지긴(throw) 하였으나 잡는(Catch) 코드가 별도로 없기 때문에 프로그램이 강제로 종료됨 실행되지 않음!

2. 예외 처리기의 개요 try/catch 블록 try 블록 catch 블록 기본 형식 예외가 발생되어 던져질 수 있는 블록 던져진 예외를 잡아서 처리하는 블록 기본 형식 try { … // 예외가 발생할 수 있는 코드 } catch (예외클래스 참조변수) { // 예외를 처리하는 코드 }

2. 예외 처리기의 개요 try/catch 블록에서의 실행 흐름 try/catch 블록의 특징

2. 예외 처리기의 개요 try/catch 블록 예제 1 public class DivideByZeroOK { DivideByZeroOK.java public class DivideByZeroOK { public static void main(String[] args) { int x = 1; int y = 0; try { int result = x / y; // 예외 발생! } catch (ArithmeticException e) { System.out.println("0으로 나눌 수 없습니다."); } System.out.println("프로그램은 계속 진행됩니다.");

2. 예외 처리기의 개요 try/catch 블록 예제 2 import java.util.*; InputError.java import java.util.*; public class InputError { static Scanner scan = new Scanner(System.in); public static void main(String[] args) { int i = 0; System.out.print("정수를 입력하시오: "); try { i = scan.nextInt(); System.out.println("입력받은 정수의 값: " + i); } catch (InputMismatchException e) { System.out.println("정수가 아닙니다. "); }

2. 예외 처리기의 개요 예외 발생 차단 try/catch가 아무리 유용할지라도 만약 정상적인 코딩으로 예외가 발생할 수 있는 상황을 차단할 수 있다면 그렇게 하는 것이 더 좋은 프로그래밍 방법이다. 예제 1에서 분모가 0인지 미리 검사 예제 2에서 정수가 입력되었는지 검사하는 코드 삽입 If (y != 0) int result = x / y; import java.util.*; public class InputError { static Scanner scan = new Scanner(System.in); public static void main(String[] args) { int i = 0; System.out.print("정수를 입력하시오: "); if (scan.hasNextInt() ) i = scan.nextInt(); else System.out.println("정수가 아닙니다. "); }

2. 예외 처리기의 개요 finally 블록 오류가 발생하였건 발생하지 않았건 항상 실행되어야 하는 코드는 finally 블록에 넣을 수 있다. 예 TV를 켜고 TV 시청에 성공했든 안했든 TV는 다시 꺼야 한다. 즉, finally블록은 뒷처리를 위한 용도로 쓰일 수 있다.

3. 예외의 종류 예외 관련 클래스들의 계층도 모든 예외는 Throwable 로부터 상속되어 Exception과 Error 클래스로 나뉘어서 분류된다.

3. 예외의 종류 Exception 및 Error 의 차이 : 시스템에서 발생하는 심각한 에러이다. - 치명적인 내부 오류나 자바 가상 머신에서의 자원 고갈 등과 관련 - 프로그램이 바로 종료됨 - 거의 발생되지 않는다. Throwable Exception : 프로그램의 실행 도중 흔히 발생할 수 있는 일반적 에러 1) RunTimeException : 프로세스 실행중에 발생하는 에러 2) IOException : 파일 및 네트워크 입출력시에 발생하는 에러

3. 예외의 종류 주요 예외 정리

3. 예외의 종류 Unchecked Exception과 Checked Exception 컴파일러가 해당 예외에 대해 신경쓰지 않는 예외 종류 Error 클래스 및 이 클래스의 서브 클래스들의 예외 RuntimeException 클래스 및 이 클래스의 서브 클래스들의 예외 체크 예외 (Checked Exception) 컴파일러에 의해 코딩상에서 해당 예외에 대해 처리가 정확하게 이루어졌는지 체크하는 예외 IOException 클래스 및 이 클래스의 서브 클래스들의 예외 Error Throwable Exception 1) RunTimeException 2) IOException Unchecked Exception Checked Exception

3. 예외의 종류 다형성과 예외 경우 1 경우 2 분간이 가능하긴 하다.

3. 예외의 종류 다형성과 예외 경우 3 경우 4 (중요!!!) catch 블록을 여러 개 작성할 때에는 구체적인 클래스 이름을 먼저 사용하고 일반적인 클래스 이름은 나중에 써야 한다.

4. 예외와 메소드 예외를 발생시키는 메소드 분간 및 처리법 위와 같이 checked exception 을 던지는 메소드를 호출할 때 예외 처리 방법 방법 1) try/catch 블록 사용 방법 2) 다시 예외를 상위 메소드로 전달

4. 예외와 메소드 예외를 발생시키는 메소드 정의 방법 throw 키워드 메소드 선언시에 본 메소드 몸체에서는 지정한 예외가 발생할 수 있다고 메소드 호출자에게 알리는 역할을 함 일반적으로 비체크 예외인 Error 및 RuntimeException 예외는 throws 키워드 뒤에 잘 열거하지 않는다. 체크 예외인 경우 1) throws 키워드와 함께 본 메소드에서 발생가능성이 있음을 명시적 알림 2) try/catch 블록 사용 int method(int n) throws IOExcpetion, 예외2 { … InputStream is = new InputStream(…); is.read(); }

4. 예외와 메소드 예외를 발생시키는 메소드 활용 예제 (1/4) public class Test { Test.java public class Test { public static void main(String[] args) { System.out.println(readString()); } public static String readString() { byte[] buf = new byte[100]; System.out.println("문자열을 입력하시오:"); System.in.read(buf); return new String(buf);

4. 예외와 메소드 예외를 발생시키는 메소드 활용 예제 (2/4) 1) try/catch 블록 사용 방법 Test.java import java.io.IOException; public class Test { public static void main(String[] args) { System.out.println(readString()); } public static String readString() { byte[] buf = new byte[100]; System.out.println("문자열을 입력하시오:"); try { System.in.read(buf); } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); return new String(buf);

4. 예외와 메소드 예외를 발생시키는 메소드 활용 예제 (3/4) 2) 상위 메소드로 예외를 던지는 방법 - 1 Test.java import java.io.IOException; public class Test { public static void main(String[] args) { try { System.out.println(readString()); } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); } public static String readString() throws IOException { byte[] buf = new byte[100]; System.out.println("문자열을 입력하시오:"); System.in.read(buf); return new String(buf);

4. 예외와 메소드 예외를 발생시키는 메소드 활용 예제 (4/4) 2) 상위 메소드로 예외를 던지는 방법 – 2 이 방법은 결국 main() 메소드까지 자신이 받은 예외를 자바 가상 머신에게 던져버리고 자바가상머신의 디폴트 예외 처리기에 그 예외에 대한 처리를 맡기는 방식임. 자바 가상 버신의 디폴트 예외 처리기는 무조건 프로그램을 강제 종료한다. Test.java import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { System.out.println(readString()); } public static String readString() throws IOException { byte[] buf = new byte[100]; System.out.println("문자열을 입력하시오:"); System.in.read(buf); return new String(buf);

5. 예외 생성하기 throw 키워드 자바 코딩상에서 예외를 발생시킬 때 사용하는 키워드 주의]throws 키워드와 다르다 new IOException();

5. 예외 생성하기 throw 키워드 사용 사용자 정의 예외 프로그래머가 직접 예외 클래스를 새롭게 정의하여 이 클래스로부터 예외 객체를 만들어 사용할 수 있다. Exception 클래스 또는 그 서브클래스 중 하나를 상속받아야 한다. void allocateMemory() throws AllocateMemoryFailException { … if (memory == null) throw new AllocateMemoryFailException(); } public class MyException extends Exception { … }

5. 예외 생성하기 예외 발생 예제 ExceptionTest.java class DivideByZeroException extends ArithmeticException { public DivideByZeroException() { super("0으로 나눌수는 없음."); } public class ExceptionTest { public static void main(String[] args) { double result; try { result = quotient(1, 0); } catch (DivideByZeroException e) { System.out.println(e.toString()); public static double quotient(int n, int d) throws DivideByZeroException { if (d == 0) throw new DivideByZeroException(); return (double) n / d;

5. 예외 생성하기 여러 개의 예외 발생 및 처리 네트워크에서 데이터를 받을 때 발생할 수 있는 예외 상황 1) 네트워크 접속이 끊기거나 2) 하드 디스크가 꽉찰 수 있음 위 클래스의 saveFile() 메소드 사용법 public class NetworkFile { public void saveFile() throws NetworkException, DiskException { … } public class Test { public void process() { NetworkFile f = new NetworkFile(); try { f.saveFile(); } catch (NetworkException e) { … } catch (DiskException e) { }