RMI / Обработка исключений в пользовательской JVM - PullRequest
0 голосов
/ 07 апреля 2009

Я знаю, что пользовательская JVM может вести себя немного по-другому, и я пытаюсь понять, совпадает ли мое наблюдаемое поведение с реальной JVM. Кроме того, я ищу способ последовательно заставить этот материал работать.

Самое худшее, что я видел, это то, что JVM полностью поглощает исключения. Например:

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

Я видел два ответа в моем коде на передачу null для "test". Одним из них является то, что он регистрирует «NullPointerException». Ничего другого, только эта строка.

Другое дело, что он ничего не записывает. Выполнение кода просто останавливается, и после запуска этого кода ничего не происходит (даже если есть метод try / catch для вызывающего метода)

Кроме того, после исключения вызывающий поток, кажется, никогда не продолжает (что делает ошибки, как это, удивительно трудно отследить).

Если я попытаюсь поймать этот метод и зафиксировать ошибку, он будет работать нормально.

По общему признанию, я работаю над более старой JVM с пользовательским кодом, поэтому я не ожидаю особой помощи, но кто-нибудь видел такое поведение? Может быть, в старой JVM? Это должно выдать исключение по проводам, или это должно напечатать трассировку стека в удаленной системе?

Является ли включение исключения в RemoteException и его повторное использование разумным решением?

Есть предложения? (Помимо спецификации новой JVM - это настолько далеко от реальности, что это даже не смешно)

1 Ответ

0 голосов
/ 18 июня 2010

Это оказалось воспроизводимым поведением. Созданные исключения не были перехвачены / переброшены на промежуточном уровне, к которому у меня не было доступа - поток, вызывающий мой код, проглотил исключение.

Это вообще не было проблемой с виртуальной машиной.

Просто вставьте это, чтобы я мог принять ответ.

...