我取消了try-catch语句,这意味着它将尝试一段代码,如果失败,将执行catch部分。我不明白的是,在catch部分使用printStackTrace表示错误。我的意思是,为什么编写以下代码会很有用:
try{
}
catch (OutOfMemoryError e) {
e.printStackTrace();
}
如果try部分中的代码失败,将根据上述代码打印内存不足错误。这是什么原因?如果应用程序崩溃(try函数的代码),Google Play控制台上不会自动打印错误吗?如果Google Play控制台实际上打印了错误的堆栈跟踪,而不需要使用try-catch函数,我不理解打印错误的原因。。。
我不明白为什么使用try-catch的真实代码示例:
public void playMediaPlayer(int id) {
try {
if (mediaPlayer != null || mediaPlayer.isPlaying()) {
mediaPlayer.release();
mediaPlayer = new MediaPlayer();
}
if (id == 1) {
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sound1);
} else if (id == 2) {
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sound2);
}
if (PreferenceData.getSound(getApplicationContext())) {
mediaPlayer.start();
}
} catch (OutOfMemoryError e) {
e.printStackTrace();
}
}
1条答案
按热度按时间hk8txs481#
没有任何东西会自动转到Google Play控制台,因为它永远不会崩溃。catch将防止异常崩溃并继续运行。这使得这段代码非常危险,除非你知道自己在做什么。通常,只有在使用缓存的代码中才会看到这样的情况,因为失败的分配会导致您将数据踢出缓存并重试。
至于为什么您可能想这样做——出于调试目的。您可能希望在调试时查看它发生的时间和有关分配的信息(例如它有多大)。它只供您个人使用,因为您永远不会看到其他设备的日志。