繁体   English   中英

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

[英]How can I retry a try-catch after I catch an IllegalStateException?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM