Бросьте исключение и напечатайте его трассировку стека в logcat на уровне «ошибки» - PullRequest
1 голос
/ 14 июня 2019

У меня есть бросаемый объект, и я хочу напечатать его трассировку стека в logcat с уровнем ведения журнала «Log.e» (ошибка).Мой метод вызывает исключение, но трассировка стека выводится как предупреждение.

Вот мой код:

@Throws(RuntimeException::class)
fun throwErrorIfNotHttp (e: Throwable) {
    if (e is HttpException) {
        val code = e.code()
    } else if (e is SocketTimeoutException) {
        Log.e("time out", "time out")
    } else if (e is IOException) {
        Log.e("File error", "file error")
    } else {
       throw RuntimeException(e) // This  should appear as error
    }
}

Вот изображение исключения.

enter image description here

Редактировать

Моя функция расширения:

fun <T> Observable<Response<T>>.makeRequest(
    context: Context,
    executeOnError: ((Any?) -> Unit)? = null, executeOnSuccess: (T?) -> Unit
): Disposable? {

   val disposable: Disposable = this
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({
            if (it.isSuccessful) {
                executeOnSuccess(it?.body())
            } else {
                val error = getExceptionFromResponse(it, context)
                 handleError(error, context)

            }
        }, {
           throwErrorIfNotHttp(it)            
        })

    return disposable

}

Как сделать так, чтобы она отображалась по ошибкевкладка вместо предупреждения вкладка?

1 Ответ

1 голос
/ 14 июня 2019

Попробуйте добавить к своему оператору else

Log.e(TAG, "mymessage",e);

Весь код:

@Throws(RuntimeException::class)
fun throwErrorIfNotHttp (e: Throwable) {
    if (e is HttpException) {
            val code = e.code()
    } else if (e is SocketTimeoutException) {
            Log.e(TAG, "time out")
    } else if (e is IOException) {
            Log.e(TAG, "file error")
    } else {
      Log.e(TAG, "mymessage",e);
      throw RuntimeException(e) // This  should appear as error
    }
 }

companion object{
  val TAG = "class_tag"
}
...