The Daily WTF 日本語 フォロー CodeSOD:ミスを見つけました Daniel は、データが存在すると予想されるにもかかわらず、データベースクエリが結果を返さないという問題に遭遇しました。彼はデータベース操作のために execute_read というラッパー関数を使用していました。この関数は、いくつかの疑問のある設計上の選択を示していました。1つの問題は only_one パラメータで、これは専用のデータベースライブラリ関数とは異なり、戻り値を大幅に変更していました。別の問題は、クエリタイミングのしきい値を決定するために env.is_production() を使用していたことで、これは設定パラメータで処理すべきであることを示唆していました。しかし、最も重大な欠陥は、広範な例外ハンドラでした。このハンドラは、すべてのエラーを無差別にキャッチし、ログに記録しましたが、関数の実行を続行させました。その結果、Daniel のクエリに構文エラーがあった場合、関数はその例外をキャッチし、空の結果セットを返しました。これにより実際のエラーが隠蔽され、Daniel はデバッグにかなりの時間を費やすことになりました。彼は最終的にログの中に埋もれたエラーを発見しました。著者は、特にネットワークの問題が発生する可能性のある本番環境では、このようなサイレントフェイルの危険性を強調しました。エラーの明確な兆候なしに空の結果を返すことは、重大な混乱とデバッグの困難につながります。 CodeSOD: Caught a Mistake thedailywtf.com The Daily WTF 日本語 RSS thenote.app
execute_readというラッパー関数を使用していました。この関数は、いくつかの疑問のある設計上の選択を示していました。1つの問題はonly_oneパラメータで、これは専用のデータベースライブラリ関数とは異なり、戻り値を大幅に変更していました。別の問題は、クエリタイミングのしきい値を決定するためにenv.is_production()を使用していたことで、これは設定パラメータで処理すべきであることを示唆していました。しかし、最も重大な欠陥は、広範な例外ハンドラでした。このハンドラは、すべてのエラーを無差別にキャッチし、ログに記録しましたが、関数の実行を続行させました。その結果、Daniel のクエリに構文エラーがあった場合、関数はその例外をキャッチし、空の結果セットを返しました。これにより実際のエラーが隠蔽され、Daniel はデバッグにかなりの時間を費やすことになりました。彼は最終的にログの中に埋もれたエラーを発見しました。著者は、特にネットワークの問題が発生する可能性のある本番環境では、このようなサイレントフェイルの危険性を強調しました。エラーの明確な兆候なしに空の結果を返すことは、重大な混乱とデバッグの困難につながります。