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 : 例外が発生した行のソースコード

Copyright © Rice All rights reserved.