def set_attribute(attributes, name, value):
for i, attribute in enumerate(attributes):
if name in attribute:
quote_char = attribute.find('"')
if quote_char == -1:
raise ValueError
return None
attributes[i] = attribute[:quote_char+1] + str(value) + '"'
return attributes
私は新しいプログラマーであり、例外処理を正しく理解しようとしています。
この例では、すべての場所に文字が含まれてname
いる必要がある"
ため、これが失敗した場合は例外を発生させたいと思いますが、return None
ステートメントが必要かどうか(または何かをするかどうか)も理解しようとしました。
私の理解では、例外ハンドラーが見つかるまで、スコープの各レベルから脱出することになりました。Pythonチュートリアルはこれを言います:
- 最初に、try句(tryキーワードとexceptキーワードの間のステートメント)が実行されます。
- 例外が発生しない場合、except句はスキップされ、tryステートメントの実行が終了します。
- try句の実行中に例外が発生した場合、残りの句はスキップされます。次に、そのタイプがexceptキーワードにちなんで名付けられた例外と一致する場合、except句が実行され、その後、tryステートメントの後に実行が続行されます。
- try句の実行中に例外が発生した場合、残りの句はスキップされます。次に、そのタイプがexceptキーワードにちなんで名付けられた例外と一致する場合、except句が実行され、その後、tryステートメントの後に実行が続行されます。
- 例外句で指定された例外と一致しない例外が発生した場合、それは外部のtryステートメントに渡されます。ハンドラーが見つからない場合、それは未処理の例外であり、実行は上記のようなメッセージで停止します。
しかし、この説明を読んだ後、私は例外を理解していないことに気づきましたが、理解する必要があります。
それで、質問を簡単に述べると、このreturn None
ステートメントは必要ですか、そしてなぜですか?また、例外がどのように機能するかについてどこが間違っていますか?