이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
엄태휘
가입: 2014년 9월 14일 올린 글: 8
|
올려짐: 2019년12월20일 0:27 주제: [챌린지] 챌린지 7번 예외 처리 관련 문의드립니다. |
|
|
안녕하세요 조교님.
7번의 예외처리 관련해서 다음과 같은 경우는 어떻게 처리되는지 궁금해서 질문을 올리게 되었습니다.
코드: | try ((try raise handle raise); write(2)) handle write(1);
write (3)
|
안쪽의 try raise 가 handle로 raise를 호출하고, 그 raise가 handle로 write(1)을 호출 한 뒤에, 진행하여 write(3)을 하는 것이 맞나요? 즉 제일 밖의 handler로 jump하게 되는 것인지요?
아니면 가장 안쪽의 예외 처리식의 값이 write(1)이 된 후에, 정상적으로 write(2)를 하고 write(3)을 하는 것이 맞나요?
감사합니다. |
|
위로 |
|
|
조민기
가입: 2015년 9월 6일 올린 글: 82
|
올려짐: 2019년12월20일 12:02 주제: |
|
|
인용: | 안쪽의 try raise 가 handle로 raise를 호출하고, 그 raise가 handle로 write(1)을 호출 한 뒤에, 진행하여 write(3)을 하는 것이 맞나요? 즉 제일 밖의 handler로 jump하게 되는 것인지요? |
위가 맞습니다. |
|
위로 |
|
|
엄태휘
가입: 2014년 9월 14일 올린 글: 8
|
올려짐: 2019년12월20일 17:59 주제: |
|
|
감사합니다.
혹시 예외 처리를 구현할 때 SM5의 스택의 경우에는 어떻게 처리되어야하나요?
코드: | let x:= 0 in
try x:= 3 + raise handle write(1) |
와 같은 경우에는 write(1)이 수행되는 시점에서의 환경뿐만 아니라 스택도 try문의 만들어질때의 스택과 같아야 할지, 아니면 스택에 add를 시도할 때의 3이 들어있어도 무방한지 궁금합니다.
[/code] |
|
위로 |
|
|
조민기
가입: 2015년 9월 6일 올린 글: 82
|
올려짐: 2019년12월20일 19:39 주제: |
|
|
이것은 풀이와 직접 관련된 것이므로 답변드리기 어려울 것 같습니다.
K-- + exception을 SM5eh로 번역했을 때 결과가 같도록 SM5eh의 정의(작동 방식 포함), 그리고 번역 방법을 고안하시면 됩니다. 정답이 한가지로 정해진 것은 아니고 다양한 정답이 있을 수 있습니다.
코드: | let y:= 1 + (try x:= 3 + raise handle 5);
write(y)
|
만약 위와 같은 코드라면 SM5eh로 번역되었을 때 6이 쓰여야 할 것입니다. |
|
위로 |
|
|
|