-
- const char *storage = (*env)->GetStringUTFChars(env, jstorage, 0);
- const char *path = (*env)->GetStringUTFChars(env, jpath, 0);
- const char *mode = (*env)->GetStringUTFChars(env, jmode, 0);
-
- msg_file_t file = MSG_file_open(storage, path, mode);
-
- jfile_bind(env, jfile, file);
-
- (*env)->ReleaseStringUTFChars(env, jstorage, storage);
- (*env)->ReleaseStringUTFChars(env, jpath, path);
- (*env)->ReleaseStringUTFChars(env, jmode, mode);
+ const char *storage = (*env)->GetStringUTFChars(env, jstorage, 0);
+ const char *path = (*env)->GetStringUTFChars(env, jpath, 0);
+ const char *mode = (*env)->GetStringUTFChars(env, jmode, 0);
+ msg_file_t file;
+ xbt_ex_t e;
+ TRY {
+ file = MSG_file_open(storage, path, mode);
+ }
+ CATCH(e) {
+ xbt_ex_free(e);
+ }
+ jfile_bind(env, jfile, file);
+
+ (*env)->ReleaseStringUTFChars(env, jstorage, storage);
+ (*env)->ReleaseStringUTFChars(env, jpath, path);
+ (*env)->ReleaseStringUTFChars(env, jmode, mode);