异常谓词从哪里来的球拍?

  • 本文关键字:谓词 异常 exception racket
  • 更新时间 :
  • 英文 :


我一直在试图弄清楚异常在Racket中是如何工作的,但是我对异常谓词有点困惑。要捕获例如exn:fail类型的异常,可以在with-handlers表达式中使用谓词exn:fail?对其进行测试。我已经找到了exn:fail的文档,但我没有看到exn:fail?的文档。我对此如此好奇的原因是,根据本文,如果您为exn:no-vowels创建一个自定义异常结构,那么您仍然可以使用exn:no-vowels?,尽管这个谓词从未手动实现过。如果我不得不猜测,谓词一定是用宏自动生成的,但如果是这样,我很想知道这个"自动生成谓词的行为"在哪里?详细说明了宏的工作原理。

exn和派生的异常类型(如exn:fail层次结构)都是Racket结构类型的实例,谓词、构造函数和访问器(如exn-message)在使用struct宏创建时自动定义。

用户定义的异常类型可以从struct-out模块导出为provide形式,导出所有生成的函数,而无需手动列出它们。

最新更新