この質問の一般的な要点: 何かがうまくいかない可能性が少しでもある場合、考えられるエラーをキャッチする必要がありますか? 具体的には:
プログラムの以前の履歴を .txt ファイルに読み書きするアプリがあります。初期化時に、プログラムは履歴ファイルを読み取って、実行する必要がある操作と実行しない操作を決定します。履歴ファイルがまだ存在しない場合は、作成されます。そのようです:
global trackList
try:
# Open history of downloaded MP3s and transfer it to trackList
with open('trackData.txt', 'r') as f:
trackrackList = f.readlines()
except Exception, e: #if file does not exist, create a blank new one
with open('trackData.txt', 'w') as f:
f.write("")
次に、プログラムは、txt
ファイルに含まれているかどうかに基づいて、MP3 のダウンロードに進みます。MP3 をダウンロードすると、それをtxt
ファイルに追加します。そのようです:
mp3File = requests.get(linkURL)
with open('trackData.txt', 'a') as f:
f.write(linkURL + '\n')
txt
これで、ファイルが最初の関数で作成された時点から残っていることがほぼ 100% 確実になります。ここでは、いくつかの MP3 をダウンロードしています。プログラムは数分以上実行されることはありません。ただし、履歴txt
ファイルがユーザーによって削除されたか、MP3 のダウンロード中に破損した可能性がわずかにあります。その場合、エラー処理がないため、プログラムがクラッシュします。
優れたプログラマーは、履歴ファイルが存在しない場合try ... except
、履歴ファイルを作成するブロックにコードの最後のブロックをラップしますか? それとも、それは単に不必要なパラノイアと無駄なスペースですか? txt
実装するのは簡単ですが、ユーザーが以前に作成したtxtファイルをわずかな時間で削除/破損する機会が文字通り何百もあるこのようなプログラムがあることに注意してください。try ... except
通常はフラットな Python コードが、ネストされた地雷原に変わります。