PowerPoint Template

Similar documents
C++ Programming

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - CSharp-10-예외처리

슬라이드 1

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

9장.예외와 단정

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

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

Cluster management software

Semantic Consistency in Information Exchange

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

슬라이드 1

歯JavaExceptionHandling.PDF

No Slide Title

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

슬라이드 1

12-file.key

C++ Programming

Design Issues

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

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

C++ Programming

Microsoft PowerPoint - Chapter 6.ppt

02 C h a p t e r Java

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

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

JAVA PROGRAMMING 실습 08.다형성

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

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

Network Programming

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

자바 프로그래밍

PowerPoint 프레젠테이션

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

제11장 프로세스와 쓰레드

3장. Hello World

PowerPoint Presentation

rmi_박준용_final.PDF

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

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

Microsoft PowerPoint - C++ 5 .pptx

설계란 무엇인가?

PowerPoint Template

PowerPoint Template

PowerPoint Template

제목

FileMaker ODBC and JDBC Guide

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

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

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

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

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

JUNIT 실습및발표

C++ Programming

JAVA PROGRAMMING 실습 05. 객체의 활용

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

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

FileMaker ODBC and JDBC Guide

PowerPoint Presentation

Microsoft PowerPoint - chap03-변수와데이터형.pptx

비긴쿡-자바 00앞부속

Microsoft PowerPoint - additional-11_13l.ppt [호환 모드]

설계란 무엇인가?

Microsoft PowerPoint - 2강

PowerPoint Presentation

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

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

설계란 무엇인가?

<C6F7C6AEB6F5B1B3C0E72E687770>

Spring Boot/JDBC JdbcTemplate/CRUD 예제

untitled

쉽게 풀어쓴 C 프로그래밍

쉽게

Microsoft Word - java19-1-midterm-answer.doc

C프로-3장c03逞풚

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

11장 포인터

금오공대 컴퓨터공학전공 강의자료

Cluster management software

쉽게 풀어쓴 C 프로그래밊

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint 프레젠테이션

Transcription:

10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실

목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리

10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling) 예외가탐지되었을때프로그램의중단없이적절한행동을취해다시정상적으로실행되도록하는메커니즘 인터럽트처리기능을프로그래밍언어에서흉내낸것 예외처리기 (exception handler) 예외를처리하는부분 ( 일련의코드 ) 예외처리기능을포함하는언어 예외가발생하였을때프로그램에서스스로예외를처리하고다시정상적으로실행 예외처리기능이없는언어 오류가발생하기전에예외를발견해야함 프로그래머가모든가능한예외에대한검사를사전에수행해야함 예외에대한조건처리와정상적인조건처리를구분하기가힘듦

10.1 예외처리의개요 (2) 4 예외처리의역사 1960 년대 PL/I 에처음도입 1970 년대 CLU 에의해크게발전 최근 Ada, C++, Java 등의언어에서는더욱고급스러운방법으로예외처리를제공 주요언어의예외처리기 C++ try 블록뒤에위치한 catch 절 Java try 블록뒤에위치한 catch 절이되는데, 반드시실행되는부분인 finally 절을지원함 Ada 블록, 부프로그램, 패키지, 태스크등의마지막부분에위치 exception 다음에 when 으로시작되는형태를지님

10.2 C++ 의예외처리 (1) 5 C++ 예외처리 미리정의된예외가없음 C++ 에서모든예외는명시적으로발생되어야함 C++ 의예외처리기 try { catch( 형식매개변수 ) { catch( 형식매개변수 ) { 예외발생영역 : try 블록 예외처리기 : try 블록뒤에위치한 catch 절

10.2 C++ 의예외처리 (2) 6 Catch 의형식매개변수 처리할예외의종류에해당 예 01 try { 02 03 04 catch(int exception) { 05 06 07 catch(double) { 08 09 int 타입의예외가발생할경우 int 타입을형식매개변수로사용하는 4 행의예외처리기실행 double 타입의예외가발생할경우 double 타입을형식매개변수로사용하는 7 행의예외처리기실행

10.2 C++ 의예외처리 (3) 7 명시적으로예외를발생시키는경우 : throw 사용 throw x; 예 01 int x; 02 try { 03 04 if (x < 0) 05 throw x; 06 07 08 catch(int) { 09 10 11 catch(double) { 12 13 5 행에서 x 라는예외가발생하면 x 가 int 타입이므로 8 행의 처리기가실행

10.2 C++ 의예외처리 (4) 8 예외처리기능을사용하는 C++ 예제 01 #include <iostream> 02 using std::cout; 03 using std::cin; 04 using std::endl; 05 06 int main(void) 07 { 08 int numerator, denominator; 09 10 cout << "two integers : ; 11 12 while(cin >> numerator >> denominator) { 13 try { 14 if (denominator == 0) 15 throw denominator; 16 cout << "quotient: " << numerator/denominator << endl; 17 cout << "remainder: " << numerator%denominator << endl; 18 19 catch(int) { 20 cout << "Exception occurred: divide by zero" << endl; 21 22 23 24 return 0; 25 분모인 denominator 가 0 이면 15 행에서예외를발생시켜 19 행에서예외처리예외처리가끝나면 while 의다음반복을실행

10.2 C++ 의예외처리 (5) 9 임의의부프로그램에서발생한예외처리기가해당부프로그램에없을경우 1 2 호출프로그램으로예외가전파되어예외에대한처리기를탐색 위의동작을반복해도해당예외처리기를찾지못할경우 terminate() 호출되며프로그램실행종료

19.3 Java 의예외처리 (1) 10 Java 예외처리 미리정의된예외가있고, 사용자가직접예외를정의할수도있음 Java 예외는 Throwable 클래스의하위클래스객체임 예외 설명 Error 메모리고갈과같은자바가상머신에의해제기되는오류 Exception RuntimeException IOException 0 으로나누기, 배열첨자범위초과등프로그램실행관련오류 입출력과정에서발생하는오류 사용자정의예외 Java 의대표적인미리정의된예외 사용자가직접정의하는예외 예외 설명 ArithmeticException 0으로나누기등의산술적오류에의해발생한다. ArrayIndexOutOfBoundsException 배열첨자범위경계초과오류에의해발생한다. NegativeArraySizeException 배열의크기를음수로지정했을때발생한다. NullPointerException null 객체에접근할때발생한다.

10.3 Java 의예외처리 (2) 11 예외가발생하는 Java 예제 1 public class division { public static void main(string[] args){ int numerator, denominator; numerator = 7; denominator = 0; System.out.println(numerator/denominator); 0 으로나누려는프로그램 --> 오류메시지를출력하고프로그램실행종료됨 Exception in thread "main" java.lang.arithmeticexception: / by zero at division.main(division.java:6) try~catch 를사용하면사용자가직접예외처리기능을설정할수있음

10.3 Java 의예외처리 (3) 12 예외가발생하는 Java 예제 2 01 public class divisionexception { 02 public static void main(string[] args){ 03 int numerator, denominator; 04 numerator = 7; 05 denominator = 0; 06 try { 07 System.out.println(numerator/denominator); 08 09 catch(arithmeticexception ae) { 10 System.out.println("Exception occurred: divide by zero"); 11 12 13 7 행에서 ArithmeticException 예외가발생 ArithmeticException 예외처리기에해당하는 10 행이실행

10.3 Java 의예외처리 (4) 13 사용자가발생시키는예외 예외를발생시키는문장 throw new myexception( ) ; public class myexception extends Exception 예외클래스의최상위클래스인 Exception 클래스를상속받게해야함 사용자정의예외를사용하는 Java 예제 01 public class myexception extends Exception { 02 public static void main(string[] args) { 03 int age; 04 try { 05 age = 5; 06 if (age < 6) 07 throw new myexception(); 08 System.out.println("age is " + age); 09 10 catch(myexception me) { 11 System.out.println("very infant"); 12 13 14

10.3 Java 의예외처리 (5) 14 finally 절 try 절에서예외가발생하든그렇지않든 finally 절은반드시실행 try { catch( ) { catch( ) { finally {

10.4 Ada 의예외처리 (1) 15 Ada 예외처리 미리정의된예외가있고, 사용자가직접예외를정의할수도있음 Ada 의미리정의된예외 예외 Constraint_Error Program_Error Storage_Error Tasking_Error 설명 배열첨자혹은부분범위경계초과오류, 오버플로, 0으로나누기등으로발생선언의동적처리에실패했을때발생동적메모리할당에실패했을때발생병행성제어오류에의해발생

10.4 Ada 의예외처리 (2) 16 예외처리기능이없는 Ada 예제 with TEXT_IO; use TEXT_IO; procedure rangeerror is package INT_IO is new TEXT_IO.INTEGER_IO (integer); use INT_IO; x: integer range 1..3; begin put("integer: "); get(x); put(x); end rangeerror; 실행시 5 를입력하면오류메시지를출력하고프로그램실행이종료 integer: 5 raised CONSTRAINT_ERROR

10.4 Ada 의예외처리 (3) 17 Ada 예외처리기 블록, 부프로그램, 패키지, 태스크등의마지막부분에위치 exception 다음에 when 으로시작되는형태 01 begin 02 03 exception 04 when 예외이름1 => 05 문장들 06 when 예외이름2 => 07 문장들 08 end; 만약, 2 행에서발생한예외가예외이름 1, 예외이름 2 에해당하면실행이종료되지않고예외처리부분인 5 행또는 7 행의내용을실행 이블록은정상적으로처리된것으로간주, 블록다음부분으로넘어감