例外処理とログ記録の両方の懸念は、どちらも横断的な関心事であるという点で、ほとんど違いは見られません。どう思いますか?メソッドが実装しているコアロジックとインターリーブするのではなく、単独で個別に処理すべきではありませんか?
編集:私が言いたいことは、私の意見では、メソッドの実装には実行の成功パスのロジックのみを含める必要があり、例外は他の場所で処理する必要があるということです。これは、チェック済み/未チェックの例外に関するものではありません。
たとえば、言語は次のような構造を使用して、完全にチェックされた方法で例外を処理します。
class FileReader {
public String readFile(String path) {
// implement the reading logic, avoid exception handling
}
}
handler FileReader {
handle String readFile(String path) {
when (IOException joe) {
// somehow access the FileInputStram and close it
}
}
}
上記の概念言語では、クラスのreadFileが例外をスローしていないため、FileReader
handlerがない場合、プログラムはコンパイルされません。そのため、ハンドラーを宣言することで、コンパイラーはハンドラーが処理され、プログラムがコンパイルされることを確認できます。FileReader
FileReader
このようにして、チェック済みおよび未チェックの例外問題の両方の長所、つまり堅牢性と可読性が得られます。