views:

127

answers:

3

Is it a bad idea to use printStackTrace() in Android Exceptions like this?

} catch (Exception e) {
    e.printStackTrace();
}
+3  A: 

The question is: is useful at all print to the stack trace in an Andriod application context? Will the standard output be visible at runtime? Will somebody care about it?

My point is that, if nobody is going to check the standard output and care to debug the error, the call to this method is dead code, and composing the stacktrace message is a worthless expense. If you need it only for debugging at development, you could set an accesible global constant, and check it at runtime:

} catch (Exception e) {
   if(com.foo.MyEnvironmentConstants.isDebugging()) {
      e.printStackTrace();
   } //else do noting
}
Tomas Narros
+1  A: 

I would avoid using printStackTrace(), use a logging system and its support of exceptions. log.log(Level.SEVERE, "Uncaught exception", e);

So if you want to change how logging is handled it's much easier.

Ryan
+3  A: 

Yes, it is a bad idea. You should instead use Android's built-in log class specifically designed for these purposes: http://developer.android.com/reference/android/util/Log.html

It gives you options to log debug messages, warnings, errors etc.

Nailuj