J'ai construit une extension Ruby en Objective-C. Maintenant, je veux utiliser @ throw/@ catch etc au lieu de la gestion des exceptions basée sur la macro et la gestion des erreurs de construction auto. J'utilise le runtime GNU livré avec le GCC.
Lorsque j'exécute mon application Ruby avec mon extension, le noyau se décharge dès qu'une exception se produit. Le abort() provient de l'exécution Objective-C GNU (libobjc/exception.c: 375):Comment construire une extension Ruby avec Objective-C en utilisant de nouvelles exceptions (@ throw ...)?
void
objc_exception_throw (id value)
{
struct ObjcException *header = calloc (1, sizeof (*header));
header->base.exception_class = __objc_exception_class;
header->base.exception_cleanup = __objc_exception_cleanup;
header->value = value;
#ifdef SJLJ_EXCEPTIONS
_Unwind_SjLj_RaiseException (&header->base);
#else
_Unwind_RaiseException (&header->base);
#endif
/* Some sort of unwinding error. */
abort();
}
Depuis que je compilé avec -fobjc-exceptions
je pense que _Unwind_RaiseException
est appelé.
Existe-t-il un moyen d'utiliser les exceptions Objective-C dans une extension Ruby?