El bloque catch no funciona en la biblioteca nativa de C ++

Estoy escribiendo una biblioteca nativa de Java en C ++, y uso el manejo de excepciones dentro de la propia biblioteca nativa, pero la biblioteca se bloquea tan pronto como lanzo una excepción. Aquí está mi programa de prueba simple, cuando lo llamo desde la prueba de Java, simplemente se bloquea tan pronto como se lanza una excepción. El bloque de captura no funciona. Alguna idea de lo que me estoy perdiendo. Gracias.

#include "Test.h"
#include <iostream>

JNIEXPORT void JNICALL Java_Test_helloWorld(JNIEnv *, jobject)
{
    std::cout<<"Hello World";
    try {
        throw 1;
    }
    catch(int )
    {
        std::cout<<" catch int block"<<std::endl;
    }
    catch(...)
    {
        std::cout<<" catch block"<<std::endl;
    }
}

Compilar y vincular:

g++ -m64 -fPIC -fexceptions -c test.cpp
g++ -shared -m64 -Wl,-soname,libtest.so -Wl,-shared-libgcc test.o -o libtest.so

$ java  -d64 -Djava.library.path=/home/vkumar/projects/test -cp $CLASSPATH Test
terminate called after throwing an instance of 'int'
terminate called recursively
Hello World^CAbort (core dumped)
Respuesta 1

Parece que la excepción fue descubierta. Tratar

int i=1;

try {
    throw i;
}

puede ser un problema con int tamaño o algo? ¿O olvidaste recompilar?

Respuesta: 2

Quiero completar valores en mi lista de matrices de tipo de clase abstracta. A continuación se muestra mi código public abstract class Account {private int accountId; ID de cliente privado int; doble saldo privado; ...

¿No se supone que pueda hacer esto? El plegado está habilitado en las preferencias de Java, pero no aparece el botón +/- junto a los comentarios. Puedo doblar importaciones y clases y métodos, pero no comentarios. También, ...

La primera dificultad para usar JNA con J9 es que J9 JVM no incluye el paquete java.awt y la clase Native importa algunas clases de este paquete. Esto se supera fácilmente descargando ...

Parece inconsistente que en Scala, la aritmética de enteros div por cero arroje una excepción java.lang.ArithmeticException: / por cero, pero la aritmética de coma flotante (1.0 / 0.0) devuelve Double.Infinity. Entiendo ...