2011-02-11 7 views
2

MIT 스키마에서 예외를 발생시키고 처리하는 방법은 무엇입니까? 같은MIT 스키마의 예외 처리

뭔가 [가 작동하지 않습니다]

((< val 0) (raise "-ve value")) 

답변

2

문서는 답을 제공한다,하지만 코드 샘플, 그래서 여기에 하나입니다 :

여기
(define (handler x) 
    (display "Handling Error: ")(display x)(newline) 
    (restart 1)) 

우리가 (문서가 "조건"부르는) 오류를 표시하고 와 아무것도하지 .

는 모든 조건이 어떻게이 기능을 핸들하게하려면 :

(bind-default-condition-handler '() handler) 

을 또는 당신은 단지 하나 개의 코드 블록을 포장 할 수 있습니다 dvingo는 지적

(bind-condition-handler '() handler (3 4)) 
+0

dkinzer, 코드 의도적으로 잘못되어 예외가 처리 될 수 있습니다. – dvingo

0

는, 워드 프로세서는 어떤 예를 그렇게 표시되지 않습니다 다음은 "오류"내장 특수 형식 (적어도 MIT 체계에서)을 사용하는 또 다른 예제입니다 (최소한 MIT 체계에서).

(define (errors-if-zero x) 
    (if (= x 0) 
    (error "x is 0") 
    x))