标题已经说明了一切——好吧,几乎:(
特别是,我对模块Sys
和Unix
中的函数感兴趣。
";OCaml中的Unix系统编程";该书(可在此处获得(声明:
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
。
然而,根据我的经验,每个错误的可能原因(反比关系(并没有被很好地记录下来(或者根本没有(。