例外処理
■ このスレッドは過去ログ倉庫に格納されています
0310デフォルトの名無しさん
2006/10/02(月) 22:44:55クラス設計をきちんとやれる(もしくはきちんと設計したライブラリがある)なら
例外安全を意識する回数を減らせる。
ただし finally がないので、ちょっとした後始末をサクっと書けない。
きっちり書くことを強制するのは、むしろ利点だとの主張もある。
Java は 308 氏のに加えて、
チェックする例外とチェックしない例外(C#やC++はこっちだけ)がある。
チェックする例外の場合は try-catch 書かないとコンパイルされないので
よほどのうっかりさんで無ければ例外処理を記述すするものの、記述は非常に煩雑。
素のAPIで記述するとDBアクセスやファイルアクセスは
try-catch で二重三重に囲われて、本来の処理がノイズに紛れる。
ほぼ定型処理なので、フレームワークでうまく切り出して楽に記述できるように工夫する。
(チェックする例外を catch して、チェックしない例外でラップして throw する、なんてことをする。)
C# はチェックしない例外だけ。
ただし using ステートメントを使うと、ブロック内を抜ける際に
Dispose メソッドを呼ぶ。これはC++の「スコープ抜ける時にデストラクタ」みたいな感じ。
Java がかなり特殊で(チェックする例外なんてなくせよって声が小さくない)、
C# が柔軟、C++がガチガチって感じ。
Java は言語仕様・API の粒度が細かいんだと思う。
その代わりライブラリ・フレームワークは充実してる。
(よって1から書くと死ねる。)
■ このスレッドは過去ログ倉庫に格納されています