例外IOの構造は次のとおりです。
Exception IO of {
name: string
....
...}
私が理解していない他のいくつかの議論。
これらすべてを割り当てる必要がありますか?この後どうするの?
exception IO of {inputfile}
私は通常、例外を定義してから発生させます。しかし、私はこのように例外を定義することさえしません。
入力ファイルが存在しない場合は、例外を発生させるだけです。私はここで何をしますか?
ありがとうございました
はい、タイプIoの例外を作成するときは、3つのフィールドすべてを指定する必要があります。フィールドの意味はドキュメントで説明されています:
これは、I/Oサブシステムでエラーが発生したときに発生する主要な例外です。Ioのコンポーネントは次のとおりです。
- name:リーダーまたはライターの名前コンポーネント。
- function:例外を発生させる関数の名前。
- 原因:リーダーまたはライターによって発生した、またはストリームI/Oレベルで検出された根本的な例外。
標準的な原因のいくつかは次のとおりです。
- 実際のシステムコールが実行されて失敗した場合は、OS.SysErr。*不正な形式の引数が指定されている場合は添え字。
- BlockingNotSupported
- NonblockingNotSupported
- ClosedStream
Ioの原因フィールドは、これらの特定の例外に限定されません。独自のリーダーまたはライターを作成するユーザーは、任意の例外を発生させることができます。これは、結果として生じるIo例外の原因フィールドとして報告されます。
ファイルが存在しない場合(関数として、ファイル名を名前として、原因としてaを使用)、openInすでに例外が発生しているため、独自の例外を発生させる必要はありません。Io"openIn"SysErr