PowerPoint Presentation

Similar documents
PowerPoint Presentation

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

PowerPoint 프레젠테이션

Cluster management software

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

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

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

Semantic Consistency in Information Exchange

C++ Programming

PowerPoint Template

슬라이드 1

歯JavaExceptionHandling.PDF

PowerPoint 프레젠테이션

Contents Exceptions

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

PowerPoint 프레젠테이션

9장.예외와 단정

JAVA PROGRAMMING 실습 08.다형성

12-file.key

PowerPoint Presentation

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

PowerPoint Presentation

No Slide Title

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 04-UDP Programming.ppt

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

PowerPoint Presentation

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

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

Design Issues

제11장 프로세스와 쓰레드

Microsoft PowerPoint - Java7.pptx

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

PowerPoint Presentation

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

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

PowerPoint 프레젠테이션

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

Network Programming

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

예제 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>

JUNIT 실습및발표

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

Java ...

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - 2강

쉽게 풀어쓴 C 프로그래밍

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

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

쉽게

교육자료

02 C h a p t e r Java

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

자바-11장N'1-502

rmi_박준용_final.PDF

슬라이드 1

4장.문장

쉽게 풀어쓴 C 프로그래밍

17장 클래스와 메소드

슬라이드 1

PowerPoint 프레젠테이션

untitled

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µå

Java

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

자바 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

PowerPoint 프레젠테이션

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

쉽게 풀어쓴 C 프로그래밊

Microsoft PowerPoint - RMI.ppt

PowerPoint 프레젠테이션

TEST BANK & SOLUTION

비긴쿡-자바 00앞부속

FileMaker ODBC and JDBC Guide

유니티 변수-함수.key

Microsoft PowerPoint - [EEL2] Lab10.pptx

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

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

PowerPoint Presentation

FileMaker ODBC and JDBC Guide

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

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

JVM 메모리구조

[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [

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

단언 단언 (assertions) 은프로그래머가현재시점에서믿고있는내용을다시한 번확인할때사용된다. 단언 34

단언의형식 35

예제 import java.util.scanner; public class AssertionTest { public static void main(string argv[]) { Scanner input = new Scanner(System.in); System.out.print(" 날짜를입력하시오 : "); int date = input.nextint(); // 날짜가 1 이상이고 31 이하인지를검증한다. assert(date >= 1 && date <= 31) : " 잘못된날짜 : " + date; System.out.printf(" 입력된날짜는 %d 입니다.\n", date); 날짜를입력하시오 : 999 Exception in thread main java.lang.assertionerror: 잘못된날짜 : 999 at AssertionTest.main(AssertionTest.java:8) 36