捕获到IllegalStateException后如何重试try-catch?

问题描述

我知道之前曾有人问过这个问题,但是我无法在我的代码中实现它。如果我抓到了,该如何再次重试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{
        }
    }