이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박성원
가입: 2015년 9월 1일 올린 글: 19
|
올려짐: 2015년11월25일 19:30 주제: 과제 7-1번 질문입니다 |
|
|
코드: |
(
raise 3
)
handle 3 (
raise 3
)
|
이런 프로그램은 무한루프를 도는게 맞나요?
만약 무한루프를 도는 것이 맞다면, 이런 프로그램도 입력으로 들어올 수 있는 건가요? |
|
위로 |
|
|
조상우15
가입: 2015년 9월 7일 올린 글: 27
|
올려짐: 2015년11월25일 21:35 주제: |
|
|
무한루프가 아니라 두 번째의 raise 3이 호출되면 이 예외를 받아줄 handle 문이 없어서 Unhandled Exception 내고 종료될 것 같네요.
실제로 돌려봐도 그렇네요..
저런 프로그램이 입력으로 들어올 수 있을진 잘 모르겠네요.. 일단 주어진 테스트케이스는 전부 온전하게 종료되는 프로그램들(최종적으로 결과값을 내어 놓는 프로그램들)이라서.. 예외를 뱉고 죽는 프로그램이 되려면 raise를 desugar 하는 과제의 목표랑 맞지 않을 것 같은데 이 부분은 조교님께서 설명해 주실 것 같습니다. |
|
위로 |
|
|
박성원
가입: 2015년 9월 1일 올린 글: 19
|
올려짐: 2015년11월25일 22:08 주제: |
|
|
인용: | 현재의 예외상황 처리식을 실행 순으로 감싸고 있는 바로 이전의 예외상황 처리식으로 다시 껑충 점프해서 위의 과정을 반복한다 |
에 따르면
두번째 raise 3이 실행되면 그걸 감싸고있는 handle 3이 다시 처리하게 되는게 아닌가요? ㅠ |
|
위로 |
|
|
조상우15
가입: 2015년 9월 7일 올린 글: 27
|
올려짐: 2015년11월25일 23:21 주제: |
|
|
xexp semantics를 보면
코드: |
Handle of xexp * int * xexp
|
이고 패턴매칭으로 쪼갠다고 생각했을 때
코드: |
...
| Handle(e1, n, e2) -> ...
|
형식이 될텐데,
말씀하신 '현재의 예외상황 처리식을 실행 순으로 감싸고 있는 바로 이전의 예외상황 처리식으로 다시 껑충 점프해서 위의 과정을 반복한다' 라는 말을 저는
'e1을 계산하다가 예외상황이 발생했고 그 예외 값이 n 일때 e2를 실행한다'는 의미로 해석했습니다..
따라서 올린 코드는
코드: |
e1 -> (raise 3)
n -> 3
e2 -> (raise 3)
|
인 Handle( e1, n, e2 ) 가 되고
e1을 실행하면 무조건 예외 값이 raise 되고, 그 예외값이 n이랑 같으면 e2식으로 처리하는데, 처리식 e2에서도 예외 값을 raise 하고, 이걸 받아줄 바깥 Handle 식이 없기 때문에 최종적으로 Unhandled Exception을 내어 종료되는 것으로 이해했습니다.
조상우15 가 2015년11월26일 0:17에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
박성원
가입: 2015년 9월 1일 올린 글: 19
|
올려짐: 2015년11월25일 23:41 주제: |
|
|
아하..
제가 handle 식의 의미 해석을 완전 잘못 하고 있었어요
죄송합니다 ㅠㅠ |
|
위로 |
|
|
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월25일 23:58 주제: |
|
|
안녕하세요,
조상우 님이 잘 답변해 주셨습니다.
- 예제로 드신 프로그램은 처리되지 않은 (unhandled) 예외가 발생했으므로 비정상적으로 종료됩니다.
- Handle(e1, n, e2) 의 실행의미 : e1에서 예외 n이 발생하면 e2의 계산결과가 전체 Handle (...) 식의 결과가 됩니다. 즉 e2가 예외 핸들러에 해당합니다.
- hw7.pdf 스펙 파일에 명시되어 있듯이, 입력은 (처리되지 않은 예외나 에러 발생 없이) 정수로 계산되는 프로그램으로 제한합니다.
조교 드림 |
|
위로 |
|
|
조상우15
가입: 2015년 9월 7일 올린 글: 27
|
올려짐: 2015년12월3일 15:34 주제: |
|
|
현재 과제 스펙이 바뀌어 입력으로 예외를 출력하는 프로그램 역시 들어옵니다.
자세한 사항은 업데이트된 과제 7 스펙을 보시면 되고 혹시 몰라 여기 추가로 남겨봅니다.. |
|
위로 |
|
|
|