[解決済み] 関数で例外を発生させるか、Noneを返すか?重複
2023-03-11 21:02:03
質問
Pythonのユーザー定義関数でベタープラクティスなのは。
raise
例外か
return None
? 例えば、あるフォルダの中で一番新しいファイルを見つける関数があります。
def latestpdf(folder):
# list the files and sort them
try:
latest = files[-1]
except IndexError:
# Folder is empty.
return None # One possibility
raise FileNotFoundError() # Alternative
else:
return somefunc(latest) # In my case, somefunc parses the filename
もう一つの選択肢は、例外を残して呼び出し側のコードで処理することですが、私はより明確に
FileNotFoundError
よりも
IndexError
. それとも、例外を別の名前で再提示するのは悪いことなのでしょうか?
どのように解決するのですか?
それは本当にセマンティクスの問題なのです。 何をするかというと
foo = latestpdf(d)
とは
?
最新のファイルがないのは至極当然なのでしょうか? それなら確かに、ただ
None
.
常に最新のファイルが見つかるとでも思っているのでしょうか? 例外を発生させましょう。 そして、はい、より適切な例外を再度発生させることは問題ありません。
これがどのディレクトリにも適用されることを想定した一般的な関数であるなら、私なら前者で
None
. ディレクトリが、たとえば、アプリケーションの既知のファイル セットを含む特定のデータ ディレクトリであることを意図している場合、私は例外を発生させます。
関連
-
[解決済み] return, return None, and no return at all?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Pythonで例外を表示するには?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
-
[解決済み] Node.jsの例外処理のベストプラクティス
-
[解決済み] Pythonで悪い/不正な引数の組み合わせに対してどの例外を発生させるべきですか?
-
[解決済み] 辞書のキーが利用できない場合、デフォルト値を返す
-
[解決済み】C#で例外をキャッチして再スローする理由とは?
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?