DRMCDU-1548: add into details exception data. update version to 0.0.4#22
DRMCDU-1548: add into details exception data. update version to 0.0.4#22
Conversation
| } | ||
| val exception = root().exceptionOrNull() | ||
| if (exception != null) { | ||
| allDetails.add(Details.Item(key = EXCEPTION_CAUSE, value = exception.cause.toString())) |
There was a problem hiding this comment.
Я не впевнений та мабуть надо чекати що cause != null бо виклик toString() може викинути NPE + Цікаво, як воно форматне реальний cause ексепшен? Якщо я не помиляюсь cause має тип Throwable і в нього всередині має бути вкладений cause і так далі (з цього також роблю висновок що cause може бути null). Можливо варто його рекурсивно обійти і розкласти в структуру якусь
There was a problem hiding this comment.
UPD: от шо я маю на увазі в коді
| allDetails.add(Details.Item(key = EXCEPTION_CAUSE, value = exception.cause.toString())) | |
| public fun traverseThrowable(th: Throwable): List<Pair<String, String>> { | |
| var current: Throwable? = th | |
| val details = mutableListOf<Pair<String, String>>() | |
| while (current != null) { | |
| Pair("exception-message", current.message) | |
| Pair("stacktrace", current.stackTraceToString()) | |
| current = current.cause | |
| } | |
| return details | |
| } |
There was a problem hiding this comment.
Стектрейс можна один раз додати а всі вкладені ексепшени пройти отаким чином. Це приклад коду не зовсім коректний але ідею саму пояснює
There was a problem hiding this comment.
Та по ідеї cause як мінімум а може і message не потрібні.
Printing the Chain: The stackTraceToString() function provides a detailed description of the exception, including the message, stack trace, and the detailed descriptions of each throwable in the cause chain.
There was a problem hiding this comment.
Типу cause використовується всередині Throwable для лінкування. Але для виведення інформації вже є готова функція stackTraceToString()
There was a problem hiding this comment.
Є тест який покриває кейс коли exception.cause == null і він повертає: exception-cause=null.
There was a problem hiding this comment.
Я додав cause та message щоб коли ти починаєш читати можна було лаконічно побачити причину інциденту але якщо не зрозуміло , то вже є exception.stackTraceToString(). В теорії їх можна видалити бо ця інфа дійсно є в exception.stackTraceToString()
There was a problem hiding this comment.
Якщо в кожному вкладенні робити ось так current.stackTraceToString(), то получимо дуже багато дубльованого тексту
| } | ||
| val exception = root().exceptionOrNull() | ||
| if (exception != null) { | ||
| allDetails.add(Details.Item(key = EXCEPTION_CAUSE, value = exception.cause.toString())) |
There was a problem hiding this comment.
UPD: от шо я маю на увазі в коді
| allDetails.add(Details.Item(key = EXCEPTION_CAUSE, value = exception.cause.toString())) | |
| public fun traverseThrowable(th: Throwable): List<Pair<String, String>> { | |
| var current: Throwable? = th | |
| val details = mutableListOf<Pair<String, String>>() | |
| while (current != null) { | |
| Pair("exception-message", current.message) | |
| Pair("stacktrace", current.stackTraceToString()) | |
| current = current.cause | |
| } | |
| return details | |
| } |
MaksymFishyn
left a comment
There was a problem hiding this comment.
Я б залишив як є, але додавав би в дітейлз тільки інформацію stackTraceToString
No description provided.