Semantic Consistency in Information Exchange

Similar documents
Cluster management software

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 09. 예외처리

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

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

9장.예외와 단정

PowerPoint 프레젠테이션

PowerPoint Template

PowerPoint Presentation

C++ Programming

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

歯JavaExceptionHandling.PDF

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

제4장 기본 의미구조 (Basic Semantics)

12-file.key

PowerPoint Presentation

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

02 C h a p t e r Java

슬라이드 1

PowerPoint Presentation

No Slide Title

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

Design Issues

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

쉽게 풀어쓴 C 프로그래밍

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

JAVA PROGRAMMING 실습 08.다형성

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - 04-UDP Programming.ppt

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint Presentation

Network Programming

제11장 프로세스와 쓰레드

PowerPoint Presentation

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

쉽게

歯처리.PDF

자바 프로그래밍

Java ...

쉽게 풀어쓴 C 프로그래밊

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

PowerPoint 프레젠테이션

4장.문장

PowerPoint Presentation

rmi_박준용_final.PDF

Microsoft PowerPoint - Java7.pptx

교육자료

PowerPoint 프레젠테이션

Microsoft PowerPoint - 2강

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - 03-TCP Programming.ppt

JUNIT 실습및발표

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

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

05-class.key

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

mytalk

Java

초보자를 위한 C# 21일 완성

Modern Javascript

Microsoft PowerPoint - RMI.ppt

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - lec4_1 [호환 모드]

비긴쿡-자바 00앞부속

PowerPoint 프레젠테이션

슬라이드 1

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

JAVA PROGRAMMING 실습 05. 객체의 활용

Cluster management software

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - Lect04.pptx

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

Microsoft PowerPoint - java2 [호환 모드]

Microsoft PowerPoint - semantics

Microsoft Word - EEL2 Lab4.docx

PowerPoint 프레젠테이션

JVM 메모리구조

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

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

Chapter_06

슬라이드 1

슬라이드 1

03장.스택.key

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

Microsoft PowerPoint - chap05-제어문.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Transcription:

제 6 장제어 (Control) 6.1 구조적프로그래밍 (Structured Programming) 6.2 예외 (Exceptions) Reading Chap. 7 숙대창병모 1

6.1 구조적프로그래밍 숙대창병모 2

Fortran 제어구조 10 IF (X.GT. 0.000001) GO TO 20 11 X = -X IF (X.LT. 0.000001) GO TO 50 20 IF (X*Y.LT. 0.00001) GO TO 30 X = X-Y-Y 30 X = X+Y... 50 CONTINUE X = A Y = B-A GO TO 11 Similar structure may occur in assembly code 숙대창병모 3

역사적논쟁 Dijkstra, Goto Statement Considered Harmful Letter to Editor, C ACM, March 1968 Knuth, Structured Prog. with go to Statements You can use goto, but do so in structured way Continued discussion Welch, GOTO (Considered Harmful) n, n is Odd General questions Do syntactic rules force good programming style? Can they help? 숙대창병모 4

구조적프로그래밍 Standard constructs that structure jumps 시작과끝나는지점이일정하다. 언어 S if E then S else S while E do S let t x = E in S end fun t f(t x) : S Modern programming style Group code in logical blocks Avoid explicit jumps except for function return Cannot jump into middle of block or function body 숙대창병모 5

Expression E Expression vs. Statement Statement S if expression vs. if statement if E then S else S e1? e2 : e3 숙대창병모 6

Syntactic sugar do S while (E) for (e1; e2; e3) S switch (E) { case a : S; ; break; case b : S; ; break; case c : S; ; break; 숙대창병모 7

6.2 예외 (Exceptions) 숙대창병모 8

예외 (Exception) 예외 ( 상황 ) 심각하지않은에러혹은비정상적상황 예외발생시계속수행할수있도록처리해야한다 발생된예외를처리하지못하면프로그램종료 예외에대한적절한처리 안전한프로그램실행을위해매우중요하다. 따라서최신언어들은예외관련기능을제공한다. Java, C++, Standard ML, 필요한예외관련구문 raise or throw exception( 예외발생 ) 을위한식혹은문장 Exception handler( 예외처리 ) 를위한문장 숙대창병모 9

언어 S 에예외추가 언어 S 의예외 예외발생및예외처리기능 S throw E try S catch (int x) S throw E 예외를발생시킨다. E의값은예외의종류를나타낸다. 발생된예외를처리하지못하면프로그램은종료한다. try S catch (int x) S try 블록에서예외가발생하면잡아서처리한다. 예외가발생하지않으면다음문장을실행 숙대창병모 10

예외예제 Factorial1 Factorial2 let int x=0, int y=1 in read x; if x < 0 then throw -1 else while x!= 0 do (y = y * x; x = x - 1); print y end let int x=0, int y=1 in read x; try if x < 0 then throw -1 else ( while x!= 0 do (y = y * x; x = x - 1); print y ) catch (int e) print e end 숙대창병모 11

실습 #5 언어 S 에예외처리기능을추가하고 이를인터프리터에서구현한다. 문법 S throw E 구현 try S catch (int x) S try 블록내에서 throw 문에의해예외가발생하면그이후문장은 catch 절을만날때까지 skip 한다. How? catch 절에서예외처리후에는정상적으로진행한다. try 블록없이 throw 한경우는? 숙대창병모 12

Java 에서예외선언 자바에서예외타입은클래스로선언 Exception 클래스나서브클래스로부터상속받아정의한다. 예외타입은클래스이다 생성자, 멤버필드, 메소드등을가질수있다. Exception object is a first-class object 일반 object 처럼클래스를이용하여정의되고 일반 object 처럼사용될수있다. 일반 object 와차이점 : throw 될수있다. 숙대창병모 13

예외클래스계층구조 Object Throwable Exception Error checked exceptions User-defined exception classes Runtime Exception ArithmeticException Unchecked exceptions NagativeArraySizeException ArrayIndexOutOfBoundsException 숙대창병모 SecurityException 14

Java 예외클래스예 ArithmeticException 0으로나누는경우에주로발생하는예외상황 RuntimeException으로부터상속받은예외클래스 ArrayIndexOutofBoundsException 배열의크기보다큰원소를접근하려고할때발생되는예외 NegativeArraySizeException 배열의크기가음수로된경우에발생하는예외 NullPointerException 생성되지않은객체를이용해서객체의멤버를접근하는경우에발생하는예외 숙대창병모 15

사용자정의예외클래스예 public class NegativeInputException extends Exception { private String reason= Negative grade ; NegativeInputException( ) { System.out.println(reason + is received ); 숙대창병모 16

예외발생 예외는 throw 문을이용해서발생시킨다 throw exception-object; throws 와는다름 숙대창병모 17

예외처리 예외발생시처리하지않는경우 프로그램은메시지를내고종료한다. 메시지는 call stack trace 를포함한다. main 메쏘드부터호출과정 숙대창병모 18

예외처리 : try-catch 문 Exceptions are caught in try-catch blocks 예외가발생할수있는문장들을 try 문블록에기술한다. 예외가발생하면해당매칭되는 catch 문으로제어가넘어간다. 구문구조 try { catch (E1 x) { catch (En x) { 숙대창병모 19

예외처리 : finally 절 finally 절은옵션 try { catch (E1 x) { catch (En x) { finally { finally 문은예외발생여부에관계없이항상수행된다 숙대창병모 20

예외처리예제 class GradeDist { int newgrade; int[ ] freq = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0 void builddist( ) throws IOException { Scanner scan = new Scanner (System.in); try { while (true) { System.out.println( Please input a grade ); newgrade = scan.nextint( ); if (newgrade < 0) throw new NegativeInputException( ); index = newgrade / 10; freq[index]++; catch(negativeinputexception x) { // 점수분포프린트 숙대창병모 21

예외처리예제 try { freq[index]++; catch (ArrayIndexOutOfBoundsException x) { if (newgrade == 100) freq[9]++; else System.out.println( Error: + newgrade + is out of range ); 숙대창병모 22

예외전파 (Exception Propagation) 처리되지않는예외전파 호출의역순으로처리될때까지전파된다. main() 메소드까지전파된다. main() 에서도처리되지않으면프로그램종료 숙대창병모 23

예외전파 : 예제 public class Propagation_Demo { static public void main (String[] args) { Exception_Scope demo = new Exception_Scope(); System.out.println("program beginning"); demo.level1(); System.out.println("program ending"); // method main // class Propagation_Demo 숙대창병모 24

예외전파 : 예제 class Exception_Scope { public void level3 (int adjustment) { int current = 1; System.out.println("level3 beginning"); current = current / adjustment; System.out.println("level3 ending"); // method level3 public void level2() { System.out.println("level2 beginning"); level3 (0); System.out.println("level2 ending"); // method level2 public void level1() { System.out.println("level1 beginning"); try { level2(); catch (ArithmeticException problem) { System.out.println (problem.getmessage()); problem.printstacktrace(); System.out.println("level1 ending"); // method level1 숙대 // 창병모 class Exception_Scope 25

예외검사 검사예외 (checked exception) 사용자정의예외로컴파일러가처리가능여부를미리검사하는예외 처리되지않는예외는메소드헤더부분에 throws 를이용하여선언되어야한다. 비검사예외 (unchecked exception) RuntimeException로부터상속받는표준런타임예외처리여부를컴파일러가검사하지않는예외 숙대창병모 26

예외명세 처리되지않은검사예외를메소드이름뒤에명세 throws 절이용 메소드 _ 이름 ( ) throws A, B, C {... 숙대창병모 27

컴파일러의예외검사 컴파일 - 시간예외검사 발생가능한예외가처리될수있는지아니면메소드선언시명세 되었는지컴파일 - 시간검사 OOOException must be caught or declared to be thrown. 호출된메소드에서처리되지않는예외 메소드선언에명세된처리되지않는예외정보를이용 숙대창병모 28

예외검사 : 예제 // 발생된예외의전파과정을보인다. public class Propagate2 { void input() throws NegativeInputException { int age; Scanner scan = new Scanner(System.in); System.out.println("input 메소드시작 "); age = scan.nextint( ); if (age < 0) throw new NegativeInputException( ); System.out.println("input 메소드끝 "); void via() throws NegativeInputException { System.out.println("via 메소드시작 "); input(); System.out.println("via 메소드끝 "); 숙대창병모 29

예외검사 : 예제 public static void main(string[] args) { Propagate2 p = new Propagate2(); System.out.println("main 메소드시작 "); try { p.via(); catch (NegativeInputException m) { System.out.println(m); System.out.println("main 메소드끝 "); 숙대창병모 30

요약 Structured Programming Go to considered harmful Exceptions structured jumps dynamic scoping of exception handler 숙대창병모 31