如何在增强的for循环中捕获异常并重新启动此循环的过程?

1 java loops exception arraylist

我已经开始使用增强的for循环,因为它的最佳实践和使用的能力ArrayLists.

我的代码基本上得到一个ArrayList,其中包含歌曲链接并解析下载歌曲的列表.引发的异常之一是TimeoutException,通常在服务器过载或互联网连接不稳定时发生.

澄清:

try
{
    for(Track track : album.getTracks())
    {
        songdown.downloadTrack(track, directorio, formataudio);
    }
}
catch (TimeoutException te)
{ 
    System.out.println("Timeout!");
}
Run Code Online (Sandbox Code Playgroud)

track是一个由Arraydown.downloadTrack函数逐个解析的ArrayList whitch.当下载失败时,会引发TimeoutException,但我不知道如何处理此异常以删除我生成的文件并从同一轨道重新启动for语句,以便再次发生下载.

Pau*_*lin 6

虽然这是一个悬而未决的问题,但这样做会更好,你最好还是选择内部循环重试直到成功.像这样的东西:

for (Track track : album.getTracks()) {
    boolean downloaded = false;
    while (!downloaded) {
        try {
            songdown.downloadTrack(track, directorio, formataudio);
            downloaded = true;
        } catch (TimeoutException te) { /* delete partially downloaded song etc */ }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能希望在for循环的每次迭代中进行最大重试次数或进行一些其他额外检查以避免无限循环.