PowerPoint Presentation

Similar documents
PowerPoint Presentation

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

Cluster management software

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

PowerPoint 프레젠테이션

歯JavaExceptionHandling.PDF

Semantic Consistency in Information Exchange

C++ Programming

슬라이드 1

PowerPoint Template

12-file.key

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

No Slide Title

9장.예외와 단정

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 04-UDP Programming.ppt

Design Issues

PowerPoint Presentation

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 03-TCP Programming.ppt

Contents Exceptions

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

PowerPoint Presentation

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

Network Programming

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JUNIT 실습및발표

신림프로그래머_클린코드.key

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec11_1516.ppt [호환 모드]

교육자료

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

02 C h a p t e r Java

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - 2강

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

쉽게 풀어쓴 C 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍

17장 클래스와 메소드

PowerPoint 프레젠테이션

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

자바 프로그래밍

PowerPoint Presentation

rmi_박준용_final.PDF

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게

PowerPoint 프레젠테이션

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 02. 표준 입출력

비긴쿡-자바 00앞부속

FileMaker ODBC and JDBC Guide

gnu-lee-oop-kor-lec11-1-chap15

유니티 변수-함수.key

슬라이드 1

자바-11장N'1-502

untitled

Microsoft PowerPoint - RMI.ppt

슬라이드 1

Java

PowerPoint Presentation

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Java ...

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

Microsoft PowerPoint - ch07 - 포인터 pm0415

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

4장.문장

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

FileMaker ODBC and JDBC Guide

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

JVM 메모리구조

선형대수학 Linear Algebra

쉽게 풀어쓴 C 프로그래밍

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Spring Boot

Chap12

Microsoft PowerPoint - [EEL2] Lab10.pptx

Transcription:

객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr

오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2

디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3

이클립스에서디버깅 4

이클립스에서디버깅 5

이클립스의디버깅명령어 6

예외처리 오류가발생했을때오류를사용자에게알려주고모든데이터를저장하게 한후에사용자가우아하게 (gracefully) 프로그램을종료할수있도록하는 것이바람직하다 7

예외란? 예외 (exception): 잘못된코드, 부정확한데이터, 예외적인상황에의하여발생하는오류 ( 예 ) 0으로나누는것과같은잘못된연산이나배열의인덱스가한계를넘을수도있고, 디스크에서는하드웨어에러가발생할수있다. 8

try-catch 블록 9

예외의예 public class BadIndex { public static void main(string[] args) { int[] array = new int[10]; for (int i = 0; i < 10; i++) array[i] = 0; int result = array[12]; System.out.println(" 과연이문장이실행될까요?"); 실행되지않음! 10

try-catch 블록으로예외처리 public class BadIndex2 { public static void main(string[] args) { int[] array = new int[10]; for (int i = 0; i < 10; i++) array[i] = 0; try { int result = array[12]; catch (ArrayIndexOutOfBoundsException e) { System.out.println(" 배열의인덱스가잘못되었습니다."); System.out.println(" 과연이문장이실행될까요?"); 11

try/catch 블록에서의실행흐름 12

finally 블록 13

try-with-resources 문장 try-with-resources 문장은문장의끝에서리소스들이자동으로닫혀지게한 다. try-with-resources 문장은 Java SE 7 버전부터추가되었다. 14

예제 ArrayList<String> list = new ArrayList<String>(); list.add( item1 ); list.add( item2 ); list.add( item3 ); try (PrintWriter output = new PrintWriter("myoutput.txt")) { for (String s : list) { output.println(s.tolowercase()); 15

예외의종류 16

예외의종류 unchecked exception checked exception 17

다형성과예외 다형성의원칙에따라상위클래스의참조변수는하위클래스의객체를참 조할수있다. 특히이것은 catch 블록에서예외를잡을때유용하다. 18

다형성과예외 try { getinput();// 예외를발생하는메소드 catch(numberexception e) { // NumberException의하위클래스를모두잡을수있다. try { getinput(); catch(exception e) { //Exception 의모든하위클래스를잡을수있으나분간할수없다.! 19

다형성과예외 try { getinput(); catch(toosmallexception e) { //TooSmallException 만잡힌다. catch(numberexception e) { //TooSmallException 을제외한나머지예외들이잡힌다. try { getinput(); catch(numberexception e) { // 모든 NumberException 이잡힌다. catch(toosmallexception e) { // 아무것도잡히지않는다! 20

예외와메소드 throws 를사용하여, 다른메소드한테예외처리를맡길수있다. 21

예제 public void writelist() throws IOException { PrintWriter = new PrintWriter(new FileWriter("outfile.txt")); for (int i = 0; i < SIZE; i++) out.println(" 배열원소 " + i + " = " + list[i]); out.close(); 22

에외를처리하는절차 어떤메소드안에서예외가발생하면런타임시스템은그메소드안에예외 처리기가있는지를살핀다. 만약그자리에예외처리기가없다면호출스 택 (call stack) 에있는상위메소드를조사하게된다. 23

LAB: 예외처리하기 다음코드의예외를처리하여보자. 1. public class Test { 2. public static void main(string[] args) { 3. System.out.println(readString()); 4. 5. 6. public static String readstring() { 7. byte[] buf = new byte[100]; 8. System.out.println(" 문자열을입력하시오 :"); 9. System.in.read(buf); 10. return new String(buf); 11. 12. Exception in thread "main" java.lang.error: Unresolved compilation problem: Unhandled exception type IOException at Test.readString(Test.java:9) at Test.main(Test.java:3) 24

SOLUTION 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); 25

에외생성하기 26

예외는 throw 문장으로생성된다. 어떤메소드도 throw 문장을사용하여서예외를생성할수있다. throw 문장은하나의인수만을요구하는데바로 Throwable 객체이다. Throwable 객체는 Throwable 클래스를상속받는자식클래스들의인스턴스 27

예제 public Object pop() { Object obj; if (size == 0) {... throw new EmptyStackException(); return obj; 28

예외처리의장점 오류처리코드를정상적인코드와분리할수있다. 동일한코드를예외처리를사용하지않는경우와예외처리를사용하는경 우로분리하여비교해보자. 29

예외처리를사용하지않는경우 errorcodetype readfile() { int errorcode = 0; 파일을오픈한다 ; if (thefileisopen) { 파일의크기를결정한다 ; if (gotthefilelength) { 메모리를할당한다 ; if (gotenoughmemory) { 파일을메모리로읽는다 ; if (readfailed) { else { else {... errorcode = -1; errorcode = -2; errorcode = -3; 30

예외처리를사용하는경우 void readfile() { try { 파일을오픈한다 ; 파일의크기를결정한다 ; 메모리를할당한다 ; 파일을메모리로읽는다 ; 파일을닫는다 ; catch (fileopenfailed) {... catch (sizedeterminationfailed) {... catch (memoryallocationfailed) {... catch (readfailed) {... catch (fileclosefailed) {... 31

LAB: 예외처리하기 다음코드의예외를처리하여보자. public class ExceptionTest3 { public static void main(string args[]) { int num = Integer.parseInt("XYZ"); System.out.println(num); Exception in thread "main" java.lang.numberformatexception: For input string: "XYZ" at java.lang.numberformatexception.forinputstring(unknown Source) at java.lang.integer.parseint(unknown Source) at java.lang.integer.parseint(unknown Source) at numberformat.exceptiontest3.main(exceptiontest3.java:6) 32

SOLUTION public class ExceptionTest3 { public static void main(string args[]) { try { int num = Integer.parseInt("ABC"); System.out.println(num); catch (NumberFormatException e) { System.out.println("NumberFormat 예외발생 "); 33