BTW, operator new doesn't return NULL if allocation is unsuccessful, it throws bad_alloc instead, so "if (!obj)" after new is non-standard and will not work on any recent compiler.

Thanks,
Vadim

On 27.09.2013 13:10, Artem Ananiev wrote:
Hi,

here is a short question. In some JDK implementations (e.g. IBM's), JNI may throw C++ exceptions. For example, env->NewByteArray() throws bad_alloc. Right now in JDK/JavaFX native code we don't protect against that. Should we? An anti-pattern that some source scanning tools warn about is

<type> obj = new <type>();
if (!obj) {
  // handle that
}
env->SomeJNICall();

If SomeJNICall() throws an exception, "obj" will never be deleted. Protection against bad_alloc doesn't make much sense, since we're out of memory anyway and will unlikely be able to recover, but what about other exceptions?

Thanks,

Artem

Reply via email to