提高SML中的IO异常

时间:2012-10-20 17:05:22

标签: file-io sml smlnj

异常IO具有结构:

Exception IO of {
name: string
....
...}

其他一些我不理解的论点。

我是否必须分配所有这些。我的意思是在此之后我该怎么做?

exception IO of {inputfile}

我通常定义异常然后加注。但我甚至没有用这种方式定义例外。

如果输入文件不存在,我想做的就是引发异常。我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:1)

是的,在创建Io类型的异常时,您必须提供所有三个字段。字段的含义在the documentation中解释:

  

这是I / O子系统中发生错误时引发的主要异常。 Io的组成部分是:

     
      
  • name:读者或作者的名称组件。
  •   
  • function:引发异常的函数的名称。
  •   
  • cause:读取器或写入器引发的基础异常,或在流I / O级别检测到的异常。
  •   
     

一些标准原因是:

     
      
  • OS.SysErr,如果实际系统调用已完成且失败。   *如果给出了不正确的论据,则下标。
  •   
  • BlockingNotSupported
  •   
  • NonblockingNotSupported
  •   
  • ClosedStream
  •   
     

Io的原因字段不仅限于这些特殊例外。创建自己的读者或编写者的用户可能会引发他们喜欢的任何异常,这些异常将被报告为生成的Io异常的原因字段。

请注意,如果文件不存在,openIn已经引发了Io异常(函数为"openIn",文件名为SysErr,{{1}}为因为你没有必要自己抚养。