Aşağıdaki java kodunu JNI:JNI istisnalarını işlemek için basit kod
try {
SomeMethod();
}
catch (ExceptionType1 e) {
SomeAction();
}
catch (ExceptionType2 e) {
SomeAction();
}
catch (ExceptionType3 e) {
SomeAction();
}
olarak ifade etmenin güzel ve düzenli bir yolunu kullanmak istiyorum. Bunu yapmak için düzenli bir JNI patter var mı? Şu anda, bende var:
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();
}
Ve tabi ki, bu durum her bir istisna için yeniden ele alınıyor. Daha iyi bir yolu olmalı. Herhangi bir tavsiye? Varolan kodların tümünü JNA'ya aktarmakla ilgilenmiyorum, bu yüzden konuşmak için evde yetiştirilebilecek bir desen istiyorum.
JNI kodunuz için C veya C++ kullanıyor musunuz? – Alnitak
kazıma, sadece düz C. FWIW kullandığınızı görüyorum, JNI kendi deneyimim bana, RAI modelinde C++ nesneleri kullanmanın JNI ile çok yardımcı olduğunu gösterdi. şeyler kapsam dışına çıktığında otomatik olarak temizlemeyi kolaylaştırır. – Alnitak