0

例外IOの構造は次のとおりです。

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

私が理解していない他のいくつかの議論。

これらすべてを割り当てる必要がありますか?この後どうするの?

exception IO of {inputfile}

私は通常、例外を定義してから発生させます。しかし、私はこのように例外を定義することさえしません。

入力ファイルが存在しない場合は、例外を発生させるだけです。私はここで何をしますか?

ありがとうございました

4

1 に答える 1

1

はい、タイプIoの例外を作成するときは、3つのフィールドすべてを指定する必要があります。フィールドの意味はドキュメントで説明されています:

これは、I/Oサブシステムでエラーが発生したときに発生する主要な例外です。Ioのコンポーネントは次のとおりです。

  • name:リーダーまたはライターの名前コンポーネント。
  • function:例外を発生させる関数の名前。
  • 原因:リーダーまたはライターによって発生した、またはストリームI/Oレベルで検出された根本的な例外。

標準的な原因のいくつかは次のとおりです。

  • 実際のシステムコールが実行されて失敗した場合は、OS.SysErr。*不正な形式の引数が指定されている場合は添え字。
  • BlockingNotSupported
  • NonblockingNotSupported
  • ClosedStream

Ioの原因フィールドは、これらの特定の例外に限定されません。独自のリーダーまたはライターを作成するユーザーは、任意の例外を発生させることができます。これは、結果として生じるIo例外の原因フィールドとして報告されます。

ファイルが存在しない場合(関数として、ファイル名を名前として、原因としてaを使用)、openInすでに例外が発生しているため、独自の例外を発生させる必要はありません。Io"openIn"SysErr

于 2012-10-20T17:15:50.447 に答える