Gestione delle eccezioni

Le eccezioni forniscono un modo per gestire gli errori nell'applicazione. Java™ ha una strategia chiara e coerente per la gestione delle eccezioni, ma il codice C/C + + non lo fa. Pertanto, Java JNI non genera un'eccezione quando rileva un errore. JNI non sa come, o anche se, il codice nativo di un'applicazione può gestirlo.

La specifica JNI richiede il differimento delle eccezioni; è responsabilità del codice nativo controllare se si è verificata un'eccezione. Per questo scopo viene fornita una serie di API JNI. Una funzione JNI con un codice di ritorno imposta sempre un errore se un'eccezione è in sospeso. Non è necessario controllare le eccezioni se viene restituita una funzione JNIsuccess, ma è necessario ricercare un'eccezione in un caso di errore. Se non si verifica, la volta successiva che si passa attraverso JNI, il codice JNI rileva un'eccezione in sospeso e la genera. Un'eccezione può essere difficile da eseguire il debug se viene generata successivamente e, probabilmente, in un punto diverso nel codice dal punto in cui è stata creata.

Nota: la funzione JNI ExceptionCheck è un modo più ottimale per eseguire i controlli delle eccezioni rispetto alla chiamata ExceptionOccurred , perché la chiamata ExceptionOccurred deve creare un riferimento locale.