一部のデータに関数をフィットさせていますが、いくつかの初期パラメータ値がオーバーフローエラーを引き起こします。私は自分のコードでそれを捕まえ、それに新しい初期パラメータを与えて、やり直したい。私の解決策はブロックを除いて入れ子にすることです。Pythonでネストされたtryブロックに同じelseブロックを使用します。
try:
foo(args1)
except:
args2 = make_new_args()
try:
foo(args2)
except:
give_up_and_move_on()
else:
process_data()
else:
process_data()
else節のいずれかを削除する方法があるかどうかは、同じコードなので、私は疑問に思っていました。
'give_up_and_move_on()'が何をするかによって決まります。例外を返すか、または発生させた場合は、2つの 'else'を取り除き、0の字下げレベルで' process_data() 'を使うことができます。 – Evert
'process_data()'には、フィットオブジェクトからパラメータを抽出し、配列に挿入することが含まれます。オーバーフローエラーはパラメータの生成を防ぎます。したがって、オーバーフローエラーが2回スローされた場合、 'process_data()'は機能しません。代わりに 'give_up_and_move_on()'を使用する必要があります。 – Deb