0
Pythonでは、特定のPOSIXエラー条件には別の例外タイプがありません。つまり、OSError
例外オブジェクト内の属性で区別されます。特定の例外(ENOENTなど)を別のものと区別して扱います。
ファイル操作(SFTPで存在しないファイルを削除する)を実行していて、ENOENTを無視したいが、他のエラーや例外を処理しているとします。それは次のようによりエレガントに行うことが可能ですか?
try:
action()
except e as OSError:
if e.errno == errno.ENOENT:
pass
else:
sophisticated_error_handling(e)
except e:
sophisticated_error_handling(e)
私はこの方法を嫌うのは、繰り返しが必要なためです。
注:X-Yの問題はありません。 「アクション」はライブラリ関数であり、ENOENTを無視するように指示することはできません。
if文ですべてのエラーをキャッチし、型をチェックしますか?どのように正確にはわからないが、擬似コード: 'try:somecode except e:e.type == OSErrorとe.errno == errno.ENOENT:pass/else:sophisticated()' – TessellatingHeckler
例:https://repl.it/JnUQ/0(https://stackoverflow.com/a/9824050/478656の警告) – TessellatingHeckler