[code]public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String nullValue = null;
try
{
nullValue.equals(“must be exception”);
}
catch(Exception e)
{
e.printStackTrace();
}
}[/code]
위의 같은 예제가 있다고 가정을 해봅시다. 위의 try – catch문은 이클립스에서 자동완성을 하여 자동으로 붙은 코드입니다. 위의 경우에는 기존의 Java어플리케이션에서는 문제가 없지만 안드로이드에서는 다음과 같은 문제가 있습니다.
사실 이렇게 보니 또 문제가 없어보이네요. 아무튼 각설하고 왼쪽의 System.err를 보시면 안드로이드 고유의 Log를 사용하지 않고 에러가 출력되어 내가 의도한 로그의 Tag정보가 없는것이 현실입니다.
안드로이드에서 사용할 수 있는 형태로 로그를 출력하기 위해서는 다음과 같은 방법을 사용하시면 됩니다. 비슷한 예로 출력할 에러를 문자열 변수로 받고자 할때도 쓸 수 있습니다.
[code]try
{
nullValue.equals(“must be exception”);
}
catch(Exception e)
{
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionAsStrting = sw.toString();
Log.e(“StackTraceExampleActivity”, exceptionAsStrting);
}[/code]
이제 위와같이 에러가 출력이 됩니다. 물론 이클립스 ADT플러그인에서 설정을 일부러 끄신게 아니라면 로그를 더블클릭하여 에러 위치로 이동하는것 역시 가능합니다.
1346383891.zip
참고: http://stackoverflow.com/questions/1149703/stacktrace-to-string-in-java