[android/kotlin/java] how to print exception at logcat
핵심 코드
[kotlin]
val stringWriter = StringWriter()
e.printStackTrace(PrintWriter(stringWriter))
val exception = stringWriter.toString()
Log.d(logTag, "exception = $exception")
[java]
StringWriter stringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stringWriter));
Log.d("tag", "stringWriter = " + stringWriter);
설명
예외 내용을 로그캣에서 출력하여 확인하고 싶은 경우가 있습니다.
그런 경우 해당 코드를 활용하시면 됩니다.
아래에 전체 코드를 첨부해 놓았으니 참고 부탁드리겠습니다.
아래 코드는 문자열 "한글" 을 정수로 형변환하여 예외를 발생시킨 상황입니다.
전체 코드
package com.tistory.boywin1992
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import java.io.PrintWriter
import java.io.StringWriter
class MainActivity : AppCompatActivity() {
private val logTag = this.javaClass.simpleName + ".Tag"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
try {
val korean = "한글" as Int
} catch (e:Exception) {
val stringWriter = StringWriter()
e.printStackTrace(PrintWriter(stringWriter))
val exception = stringWriter.toString()
Log.d(logTag, "exception = $exception")
}
}
}
로그캣 출력 내용
2022-03-31 09:46:05.752 16685-16685/com.tistory.boywin1992 D/MainActivity.Tag: exception = java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at com.tistory.boywin1992.MainActivity.onCreate(MainActivity.kt:18)
at android.app.Activity.performCreate(Activity.java:8282)
at android.app.Activity.performCreate(Activity.java:8262)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4005)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4197)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2434)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8633)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)