The Backyard - ExceptionInRjb Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
!動機
Rubyの例外構文でJavaの例外を処理したい
!サンプル
integer = Rjb::import('java.lang.Integer')
begin
n = integer.parseInt('Not Numerical Expression')
rescue NumberFormatException => e
n = -1
end
!実装方法
rjb内でJavaの例外を検出した場合、例外クラスの名前(ただしパッケージ名は削除する)を利用して、StandardErrorクラスを継承したクラスを作成する。
次に、そのクラスを指定してrb_raiseを実行する。
!バージョン
rjb-0.1.2以降でサポート
!!制限事項とTODO
*異なるパッケージで同一名称の例外クラスがあれば後書きする。
*0.1.2ではJavaの例外クラス固有のメソッド/フィールドの実装までは行わない(例:SQLExceptionのSQLException#getErrorCode)。実装は予定している。
*JVM内のスタックトレースは保持していない。JVM内のスタックトレースを参照したい場合には$verboseをtrueにする(あるいはrubyの引数として-vを与える)。
Rubyの例外構文でJavaの例外を処理したい
!サンプル
integer = Rjb::import('java.lang.Integer')
begin
n = integer.parseInt('Not Numerical Expression')
rescue NumberFormatException => e
n = -1
end
!実装方法
rjb内でJavaの例外を検出した場合、例外クラスの名前(ただしパッケージ名は削除する)を利用して、StandardErrorクラスを継承したクラスを作成する。
次に、そのクラスを指定してrb_raiseを実行する。
!バージョン
rjb-0.1.2以降でサポート
!!制限事項とTODO
*異なるパッケージで同一名称の例外クラスがあれば後書きする。
*0.1.2ではJavaの例外クラス固有のメソッド/フィールドの実装までは行わない(例:SQLExceptionのSQLException#getErrorCode)。実装は予定している。
*JVM内のスタックトレースは保持していない。JVM内のスタックトレースを参照したい場合には$verboseをtrueにする(あるいはrubyの引数として-vを与える)。