问题描述
标题已经说完了-几乎:)
我尤其对模块Sys
和Unix
中的功能感兴趣。
“ OCaml中的Unix系统编程”一书(available here)指出:
1.3错误处理
除非另有说明,否则Unix模块中的所有函数在发生错误的情况下都会引发异常
Unix_error
。
exception Unix_error of error * string * string
[...]
最后,异常的第一个参数是指示错误性质的错误代码。它属于变量类型错误:
type error = E2BIG | EACCES | EAGAIN | ... | EUNKNowNERR of int
到目前为止,还不错,但是 ... 哪个函数可以引发哪个 error
?
例如,哪些人可以加注Unix_error(EAGAIN,_,_)
,而哪些人不能加注?
我是否必须研究实施情况?是否有现成的清单?
解决方法
OCaml刚刚传递了Unix错误。每个操作的可能错误在Unix文档中。实际上,在我使用的类Unix系统上,它的记录相当合理。例如,您可以从命令行尝试man 2 chmod
。
但是,根据我的经验,并没有很好地(或根本没有)记录每个错误(逆关系)的可能原因。