ProgramingTip

예외 처리를 위해 printStackTrace ()를 사용하는 것이 나쁜 생각입니까?

bestdevel 2020. 12. 29. 07:42
반응형

예외 처리를 위해 printStackTrace ()를 사용하는 것이 나쁜 생각입니까?


이와 같은 Android 예외에서 printStackTrace ()를 사용하는 것이 나쁜 생각입니까?

} catch (Exception e) {
    e.printStackTrace();
}

예, 그것은 나쁜 생각입니다. 대신 다음과 같은 목적으로 Android의 내장 로그 클래스를 사용합니다. http://developer.android.com/reference/android/util/Log.html

디버그 메시지, 경고, 오류 등을 기록하는 옵션을 제공합니다.

오류 로깅 :

Log.e(TAG, "message", e) 메시지는 예외가 발생했을 때 시도 된 내용에 대한 설명 일 수 있습니다.

단순히 또는 Log.e(TAG, e)컨텍스트에, 대한 메시지를 제공하지 않으려 경우

그런 다음 코드를 실행하는 동안 하단의 로그 콘솔을 클릭하고 TAG 또는 로그 메시지 유형을 필터로 사용하여 쉽게 검색 할 수 있습니다.


나는 이것이 당신이 필요하다고 믿는다.

catch (Exception e) {
     Log.e(TAG,Log.getStackTraceString(e)); 
}

예. printStackTrace()그러나 권장되지 않습니다. 특히 안드로이드 볼 수에서 logcat있지만 지정되지 않은 수준에서 적절한 메시지없이 write- 되는 안드로이드에서는 더욱 그렇습니다 . 대신 예외를 기록하는 적절한 방법은 ...

Log.e(TAG, "Explanation of what was being attempted", e);

예외는 메시지 매개 변수에 추가되지 않고 세 번째 변수로 사용된다. Log세부 사항을 처리합니다. 메시지 인쇄 (코드에서 수행하려는 작업의 제공 제공) Exception와의 메시지 스택 추적.


질문은 Andriod 응용 프로그램 자주에서 스택 추적으로 인쇄하는 데 유용합니까? 표준 출력이 실행에 표시? 누군가에게 관심을 가질까요?

내 요점은 아무도 표준 출력을 확인하지 않고 오류를 거부하지 않는 방법에 대한 호출은 코드이며 스택 추적 메시지라는 것입니다. 개발시 필요한에만 필요한 경우 액세스 가능한 전역 상수를 설정하고 가동에 확인할 수 있습니다.

} catch (Exception e) {
   if(com.foo.MyEnvironmentConstants.isDebugging()) {
      e.printStackTrace();
   } //else do noting
}

나는 사용을 피하고 printStackTrace()로깅 시스템과 예외 지원을 사용합니다.

log.log(Level.SEVERE, "Uncaught exception", e);

그에 따른 로깅 처리 방법을 변경할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/3855187/is-it-a-bad-idea-to-use-printstacktrace-for-caugt-exceptions

반응형