掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
例外の扱い方(必須処理の書き方について) (ID:19031)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> exitする場合を考えてみましょう。 > finallyが無い場合、こんな感じになります。 > : > FreeAndNil(jpg);を2回書かずに済むという点でfinallyを使った方が見通しが良くなります。 すみません、「exit する場合」と、finally を使うと「FreeAndNil(jpg);を2回書かずに済む」というのは、具体的にどういうことをおっしゃってるんでしょうか? finally を使うと、 except on e: Exception do begin ShowMessage( '[Err] ' + e.Message ); exit; end; end; finally FreeAndNil(jpg); end; と書ける(FreeAndNil(jpg);が一回で済む)という意味ですかね? であればこの場合、except 内で exit してますから、当然 finally の処理は実行されずに exit してしまいます。(finally の意味がない。というか、そもそもおかしい。) それとも、 except on e: Exception do begin ShowMessage( '[Err] ' + e.Message ); end; end; finally FreeAndNil(jpg); end; と書ける(exit は無いが、当該 except on 以降の処理がないので、外側に抜けて finally へ流れる)、という意味ですか? この場合は、 except on e: Exception do begin ShowMessage( '[Err] ' + e.Message ); end; end; FreeAndNil(jpg); と同じですから、やはり finally の意味はありません。 # そもそも、必須の事後処理が必要なコードにおいて、例外処理中で exit するなんて(ふつうは)まずないですが。 言いたいことは伝わってますかね…?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.