问题描述
我知道之前曾有人问过这个问题,但是我无法在我的代码中实现它。如果我抓到了,该如何再次重试try-catch块?
if(mediaPlayer!=null){
try {
mediaPlayer.start();
songEnded = 0;
} catch(IllegalStateException e) {
// media player is not initialized
//TRY AGAIN
}
}
解决方法
我认为最好的选择是将其包装在while循环中,并在while循环中添加一个条件,以检查媒体播放器是否已启动。
例如:
void playMediaPlayer() {
MediaPlayer mediaPlayer = new MediaPlayer();
while (!mediaPlayer.initialized) {
try {
mediaPlayer.start();
mediaPlayer.initialized = true;
} catch (IllegalStateException ignored) {
// optionally wait some time before trying again
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class MediaPlayer {
boolean initialized = false;
public void start() throws IllegalStateException{
}
}