Skip to content

(liii error)

Python 风格的错误处理库。

导入

scheme
(import (liii error))

错误类型

os-error

操作系统错误,类似 Python 的 OSError

scheme
(os-error "file not found")
;; => 抛出 'os-error 异常

type-error

类型错误,类似 Python 的 TypeError

scheme
(type-error "expected integer")
;; => 抛出 'type-error 异常

(type-error "expected ~a but got ~a" "integer" "string")
;; => 带格式的错误消息

value-error

值错误,类似 Python 的 ValueError

scheme
(value-error "invalid value")
;; => 抛出 'value-error 异常

(value-error "value must be >= ~d" 0)
;; => 带格式的错误消息

使用示例

scheme
(import (liii error))

(define (safe-divide a b)
  (if (zero? b)
      (value-error "division by zero")
      (/ a b)))

(define (require-int x)
  (if (integer? x)
      x
      (type-error "expected integer, got ~a" (type-of x))))

捕获错误

使用 R7RS 的 guard 捕获:

scheme
(guard (ex (else
            (display "Error: ")
            (display ex)
            (newline)))
  (os-error "something went wrong"))

基于 Apache 2.0 许可发布