Есть общая проблема, с которой я сталкивался несколько раз при регистрации Исключения. Кажется, существуют различные типы борьбы. Например. некоторые обертывают другие Исключения, у некоторых нет сообщения вообще - только тип.
В большинстве случаев я видел журналы Исключения с использованием либо getMessage()
, либо toString(
), но они не всегда фиксируют всю информацию, необходимую для определения проблемы. Другие методы, такие как getCause()
и getStackTrace()
, иногда предоставляют Дополнительная информация.
В качестве примера, Исключение, которое я сейчас просматриваю в окне Eclipse Inspect, является InvocationTargetException
. В самом Исключении нет причины, нет сообщения, нет stacktrace... но цель из getCause() - InvalidUseOfMatchersException
с этими подробными сведениями.
Итак, мой вопрос: учитывая исключение любого типа в качестве ввода, предоставьте один метод, который выведет красиво форматированную строку, содержащую всю релевантную информацию об исключении (например, возможно, рекурсивно вызывающий getCause()
среди других вещей?). публиковать этот вопрос, я почти собирался нанести удар по этому самому, но на самом деле не хочу изобретать велосипед - наверняка такая вещь должна была быть сделана много раз раньше...?
Пожалуйста, не назовите меня в какой-либо конкретной области ведения журнала или утилиты, чтобы это сделать. Я ищу фрагмент кода, а не библиотеку, поскольку у меня нет права добавлять внешние зависимости в проект, над которым я работаю, и он фактически регистрируется на части веб-страницы, а не на файле. Если это случай копирования фрагмента кода из такой структуры (и приписывания ему), что штраф: -)