게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

챌린지 7번 질문입니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
gmldnjs526



가입: 2017년 9월 7일
올린 글: 1

올리기올려짐: 2017년12월21일 18:27    주제: 챌린지 7번 질문입니다. 인용과 함께 답변

7번에서 K--가 확장된 결과로 추가된
raise와
try E1 handle E2
의 정확한 스펙에 대하여 질문 드리겠습니다.

(주어진 정의)

- raise는 예외상황을 발동시킨다. 그러면, 정상적인 계산 진행을 멈추고 지금까지 오는 동안 장착한 가장 최근의 예외상황 처리식으로 돌아간다.

- try E1 handle E2는 예외상황 처리식을 장착한다. 이 식은 E1만 있는 것과 다르지 않다. 단, 예외 상황이 발생할 경우 E2를 실행하도록 준비해 놓은 식이다.


1. raise는 try-식 내부의 E1에서 나타나는 것이 아니라, 단독으로 나타날 수 있는가?

2. 만약 raise가 단독으로 나타나는 것이 가능하다면
try E1 handle E2; raise; ... // E1은 정상적으로 계산이 끝나는 식
같은 구조의 코드에서는 raise가 실행될 때마다 '장착한 가장 최근의 예외상황 처리식 E2'으로 되돌아가게 되므로
E1 E2 E2 E2 ... 무한루프에 빠지는가? 아니면 다른 방식으로 처리하는가?

2.추가 질문
예를 들어
try x=0 handle write (x); y = x+1; x = y; raise;
이 식은 차례대로 1 2 3 4 5 6 ... 을 끝없이 출력하게 되는가?

3. try-식이 한 번도 등장하지 않은 상태에서 raise가 등장하면 어떻게 되는가?
장착한 예외상황 처리식이 없는 상태에선 '어디로' 돌아가야 하는가?

4.
예외상황 처리식 자체가 raise를 포함한 경우 자기 자신을 계속 반복하게 되는가?
try (...; raise; ...) handle raise
같은 식은 raise를 무한히 반복하는가?
위로
사용자 정보 보기 비밀 메시지 보내기
이동권



가입: 2012년 9월 9일
올린 글: 258

올리기올려짐: 2017년12월21일 21:37    주제: 인용과 함께 답변

명확하지 않은 부분에 대해서는 이부분이 명확하지 않으니 이렇게 정의하고 SM5를 확장하겠다고 명시하시면 될듯합니다.

다만 숙제 7-2에 정의된 try handle, raise정의를 따라가시면 아래 질문주신 경우들에 대해서는 어떻게 실행되어야 할지 명료해보입니다.


1. raise는 try-식 내부의 E1에서 나타나는 것이 아니라, 단독으로 나타날 수 있는가?
네.

2. 만약 raise가 단독으로 나타나는 것이 가능하다면
try E1 handle E2; raise; ... // E1은 정상적으로 계산이 끝나는 식
같은 구조의 코드에서는 raise가 실행될 때마다 '장착한 가장 최근의 예외상황 처리식 E2'으로 되돌아가게 되므로
E1 E2 E2 E2 ... 무한루프에 빠지는가? 아니면 다른 방식으로 처리하는가?

처리되지 않는 예외가 발생하게 되므로, 프로그램 실행이 멈춘다고 생각할 수 있겠지요. 처리되지 않은 예외가 발생될때 magic number를 출력하는 것은 7-2의 문제스펙과 맞추기 위한 조건이었으므로, 챌린지에서는 실행이 멈춘다고 생각하시면 되겠습니다.

2.추가 질문
예를 들어
try x=0 handle write (x); y = x+1; x = y; raise;
이 식은 차례대로 1 2 3 4 5 6 ... 을 끝없이 출력하게 되는가?

raise를 처리할 handle식이 없으므로 그대로 멈춘다고 생각하시면 되겠습니다.



3. try-식이 한 번도 등장하지 않은 상태에서 raise가 등장하면 어떻게 되는가?
장착한 예외상황 처리식이 없는 상태에선 '어디로' 돌아가야 하는가?

위에서 말씀드린대로입니다.

4.
예외상황 처리식 자체가 raise를 포함한 경우 자기 자신을 계속 반복하게 되는가?
try (...; raise; ...) handle raise
같은 식은 raise를 무한히 반복하는가?


두번째 raise의 경우는 예외상황을 처리해줄 식이 없으므로 무한루프에 빠지지 않고 프로그램이 멈출것입니다.

-조교드림.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay