2009-04-06 6 views
0

Je sais qu'une JVM personnalisée peut se comporter un peu différemment et j'essaie de voir si mon comportement observé est le même que celui de la JVM réelle. En outre, je suis à la recherche d'un moyen de toujours faire fonctionner ce genre de choses.RMI/Gestion des exceptions dans une machine virtuelle Java personnalisée

Le pire que j'ai vu, c'est que les exceptions sont complètement mangées par la JVM. Par exemple:

public myMethod(String test) extends Remote { 
    if(test.equals("Hey")) 
     doSomething() 
} 

J'ai vu deux réponses dans mon code pour passer en null pour "test". L'un est qu'il enregistre "NullPointerException". Rien d'autre, juste cette chaîne.

L'autre est qu'il ne RASSE AUCUN. L'exécution de code s'arrête juste, et rien après ce code est exécuté (même s'il y a un try/catch autour de la méthode appelante)

De plus, après l'exception, le thread appelant ne semble jamais continuer (ce qui rend les bugs incroyablement durs traquer).

Si je lance un essai/catch autour de cette méthode et enregistre l'erreur, cela fonctionne très bien. Il est vrai que je travaille sur une JVM plus ancienne avec un code personnalisé, donc je ne m'attends pas à beaucoup d'aide, mais est-ce que quelqu'un a vu un comportement comme celui-ci? Peut-être dans une vieille JVM? Est-il censé lancer l'exception sur le réseau ou est-il supposé imprimer une trace de pile sur le système distant?

Est-ce que l'encapsulation de l'exception dans une exception RemoteException et sa réinjection d'une solution raisonnable?

Des suggestions? (Mis à part la spécification d'une nouvelle JVM - ceci est si loin du domaine de la possibilité qu'elle n'est même pas drôle)

Répondre

0

Ceci s'est avéré être un comportement reproductible. Les exceptions lancées n'étaient pas interceptées/renvoyées sur une couche intermédiaire à laquelle je n'avais pas accès - le thread appelant mon code avalait l'exception.

Ce n'était pas du tout un problème de machine virtuelle. Il suffit de mettre cela pour que je puisse accepter une réponse pour cela.

Questions connexes