改善されたforループで作業を開始しました。その理由は、ArrayLists
を使用するのがベストプラクティスと妥当性のためです。拡張forループで例外を捕捉し、このループのプロセスを再開するにはどうすればよいですか?
私のコードは、基本的に曲へのリンクを含むArrayListを取得し、このリストを解析して曲をダウンロードします。スローされる例外の1つはTimeoutExceptionです。通常、サーバーに過負荷がかかったり、インターネット接続が不安定になったりすると発生します。明確にするため
:
try
{
for(Track track : album.getTracks())
{
songdown.downloadTrack(track, directorio, formataudio);
}
}
catch (TimeoutException te)
{
System.out.println("Timeout!");
}
トラックsongdown.downloadTrack機能によって一枚ずつ解析さwhitchのArrayListです。ダウンロードに失敗した場合、TimeoutExceptionが発生しますが、この例外を処理して、生成したファイルを削除し、同じトラックからfor文を再起動してダウンロードを再開できるようにする方法はわかりません。
これは優雅なソリューションのようですが、私の唯一の疑問は、songdown.downloadtrackがTimeoutExceptionを返すと、私がこの例外を処理すると、コードは途中から再開され、ダウンロードされた= trueになるのでダウンロードしませんもう一度、ファイルですか? –
いいえ、 'songdown.downloadTrack'はTimeoutExceptionを"返す "のではなく、残りの' try'ブロック( 'downloaded = true;')をスキップして ' catch 'ブロックを通過し、内側' while'ループの先頭に戻り、本質的に、同じ 'track'オブジェクト上の外側' for'ループの繰り返しを繰り返します。 –
ご清聴ありがとうございます。 –