次のJavaコードをJNIとして表現する、きちんとした方法が欲しいです。
try {
SomeMethod ();
}
catch (ExceptionType1 e) {
SomeAction ();
}
catch (ExceptionType2 e) {
SomeAction ();
}
catch (ExceptionType3 e) {
SomeAction ();
}
これを行うためのきちんとした JNI パターンはありますか? 現在、私はこれを持っています:
java_class = (*env)->FindClass (env, EXCEPTION_CLASS_NAME);
if (java_class == NULL) {
*error_type_ref = ERROR_TYPE_FATAL;
*exception_code_ref = EU_StrSprintf ("Class not found: %s", EXCEPTION_CLASS_NAME);
cleanup ();
}
if ((*env)->IsInstanceOf (env, exception, java_class)) {
SomeAction ();
cleanup ();
}
そしてもちろん、これはそのように処理された例外ごとに繰り返されます。もっと良い方法があるはずです。推奨事項はありますか?既存のすべてのコードを JNA に移植することに興味はないので、いわば自作で実装できるパターンが必要です。