Могу ли я контролировать исключение в опциях JVM? - PullRequest
0 голосов
/ 17 декабря 2018

Я не могу напрямую изменить код Java любым способом.Однако у меня есть постоянное исключение, и я хочу применить к нему try - catch.Возможно ли это с опцией jvm?

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Хотя ответ Стивена С. является первым путем, по которому вам следует идти, вы всегда можете изменить код (если только вам это не запрещено по закону)

Вы можете

  • декомпилируйте класс, отредактируйте его и снова скомпилируйте.
  • используйте Instrumentation для изменения класса на лету.

Ни одно из этих решений не является простым, игораздо лучший подход - в первую очередь решить причину исключения.

0 голосов
/ 17 декабря 2018

Мне не совсем ясно из вашего вопроса о вашей конкретной проблеме, поэтому мое предложение может быть неприменимо для вашего сценария, но не могли бы вы установить необработанный обработчик исключений ?

ИзJavadocs:

Установите обработчик по умолчанию, который вызывается, когда поток внезапно завершается из-за необработанного исключения, и никакой другой обработчик для этого потока не определен.

0 голосов
/ 17 декабря 2018

Краткий ответ: Нет.Это невозможно.

Если вы хотите поймать исключение, вам нужно изменить код, чтобы сделать это.

Если этот вариант недоступен, свяжитесь с людьми, которые поставили / продали вам продукт, и обсудите с ними возможные обходные пути:

  • Возможно, вы используете продукт неправильно.
  • Они могут признать, что это ошибка, и предоставить вам исправление.

Если это не сработает, и вы действительно в отчаянии, возможно, удастся восстановить коди измените его для обработки исключения.Однако такой подход сопряжен с различными рисками.Но имейте в виду, что вы изменяете код.


Я могу вспомнить несколько причин, по которым такая опция не существует / не была реализована.

  • Такая модификация (внедрение catch за нежелательное исключение) изменяет поведение приложения.Это небезопасно / опасно, и сделать его менее опасным, вероятно, будет трудно.

  • Технически правильное решение - это, скорее всего, изменение программы или способа ее использования.

  • Если бы Oracle внедрила такую ​​функцию, потенциальные риски для бизнеса были бы.

...