Riceがスローする例外
Riceの例外
Riceソースを実行することによってスローされる例外は、以下の10種類です。
TokenizerException
ReplicateException
RtypeException
VirtualMachineException
VirtualMachineNoClassException
InterPreterException
BreterException
UnknownException
UserException
RiceException
以下の節で、例外の詳細を説明します。
TokenizerException
Riceは、ソースコードをトークンの列に変換します。トークンとは、Riceのソースコードとして意味を持つ最小の構成要素です。
TokenizerExceptionは、トークンに変換できない要素がある場合にスローされる例外です。
TokenizerExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(TokenizerException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
Val : string : トークン化に失敗した文字列
TokenizerExceptionは、RiceManagerのコンストラクタからスローされます。
ReplicateException
RiceManagerのコンストラクタが実行されると、Riceはソースファイルからユーザ定義クラスのプロトタイプを作成して、クラス名と対応付けてプロトタイププールに保存します。
Riceは、プログラムからのユーザ定義クラスインスタンスの生成要求に対し、プロトタイププールに保存されたオリジナルインスタンスのコピーを返します。
Riceでは、通常のコピー演算と区別するために、このユーザ定義クラスインスタンスの生成をレプリカ演算と呼んでいます。
レプリカ演算は、再帰的なフィールドのコピーです。この再帰的なコピーに失敗した場合、ReplicateExceptionがスローされます。
ReplicateExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(ReplicateException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
ReplicatedClassName : string : レプリカに失敗したクラス
FieldName : string : レプリカに失敗したフィールド
FieldType : string : レプリカに失敗したフィールドのクラス
ReplicateExceptionは、実行時にスローされます。
ReplicateExceptionは、Riceの最初期の実装の名残りです。Riceのコアシステムから、この例外が発生することはありません。
但し、組み込みクラスからこの例外がスローされる可能性はあります。例外をキャッチする場合は、ReplicateExceptionも考慮に入れることをお勧めします。
RtypeException
RtypeExceptionは、主に型関連のエラーが発生したときにスローされる例外です。RtypeExceptionがスローされる原因のほとんどは、型の不一致です。
RtypeExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(RtypeException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
ObjectType : string : 例外の原因となったクラス
Context : string : 例外の原因となったメンバ(fitter, getter, setter, method)
Signature : string : 例外の原因となったシグネチャ
RtypeExceptionは、Riceプログラムの実行時にスローされます。
VirtualMachineException
Riceは、仮想機械としてスタックマシンの概念を採用しています。仮想機械のスタックが正しい状態にない場合にVirtualMachineExceptionがスローされます。
VirtualMachineExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(VirtualMachineException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
VirtualMachineExceptionは、Riceのデバックのために導入されています。Riceプログラムの実行で、VirtualMachineExceptionが発生することはありません。
但し、万が一のために例外をキャッチする場合は、VirtualMachineExceptionも考慮に入れることをお勧めします。
VirtualMachineNoClassException
VirtualMachineNoClassExceptionは、該当するクラスが存在しない場合にスローされる例外です。
VirtualMachineNoClassExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(VirtualMachineNoClassException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
NoClassName : string : 登録されていないクラス
VirtualMachineNoClassExceptionは、Riceプログラムの実行時にスローされます。
InterPreterException
InterPreterExceptionは、論理的なエラーに対してスローされる例外です。
InterPreterExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(InterPreterException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
InterPreterExceptionは、Riceプログラムの実行時にスローされます。
BreterException
BreterExceptionは、構文エラーに対してスローされる例外です。
BreterExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(BreterException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
BreterExceptionは、解析時にスローされます。つまり、RiceManagerのコンストラクタからスローされます。
UnknownException
UnknownExceptionは.NET Framework例外から変換された例外です。
UnknownExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(UnknownException)
OriginalExceptionTypeName : string : .NET Frameworkでの例外の型名
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
UnknownExceptionは、Riceプログラムの実行時にスローされます。
UserException
UserExceptionは、ユーザによってスローされる例外です。
UserExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(UserException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード
ClassName : string : 例外が発生したクラス
UserExceptionは、Riceプログラムの実行時にスローされます。
RiceException
RiceExceptionは、上記の例外群の親クラスとなる例外です。上記の例外群は全てRiceExceptionから派生しています。
RiceExceptionは、以下のプロパティを持ちます。
TypeName : string : この例外の型名(RiceException)
Name : string: メッセージ名
Message : string: 例外の詳細を表すメッセージ
SourceFile : string : 例外が発生したソースファイルのパス
NumberOfLine : int : 例外が発生したソースファイルの行数
StringOfLine : string : 例外が発生した行のソースコード