
例外の再生成のことで質問があります。
Delphi の Ini ファイルを操作するクラス TCustomIniFile には、
ReadDate や ReadFloat といったメソッドがありますが、
このメソッドのソースコードを拝見すると、例外処理を行っている部分で
EConvertError 例外以外の時は else 節の raise で同じ例外を再生成しているのですが、
この else 節は無くても同じ気がするのですが、どうしてわざわざ else 節で
キャッチした例外を再生成しているのでしょうか?
EConvertError 例外以外は例外処理しなければそのままメソッド呼び出し元に伝わりますが、
あえて raise で再生成していることに何か意図はあるのでしょうか?
以下は ReadFloat メソッドのソースコードです。
1 と 2 の部分がなくても結果は同じではないのでしょうか?
function TCustomIniFile.ReadFloat(const Section, Name: string; Default: Double): Double;
var
FloatStr: string;
begin
FloatStr := ReadString(Section, Name, '');
Result := Default;
if FloatStr <> '' then
try
Result := StrToFloat(FloatStr);
except
on EConvertError do
// Ignore EConvertError exceptions
else ←―――――――――――――― 1
raise; ←―――――――――――――― 2
end;
end;
No.1ベストアンサー
- 回答日時:
あまりお勧めできないコーディングスタイルだけど
(elseは処理する必要が無い例外までトラップしちゃうから、
不用意に握りつぶしちゃう危険性がある)
デバッグ時に、ステップ実行する際、トラップしていない例外が発生しても、
プロシージャの外に出ないで2のとこで止まるって利点があります。
しかし、前述したように、おすすめしません。
あぁ、Delphi懐かしいなぁ。
回答どうもありがとうございます。
特別な理由がない限りelseは書かないほうがいいみたいですね。
処理する必要のない例外は何もしないようにすることにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
if文が通りません。。。
-
「タイプ初期化子が例外をスロ...
-
連続する「\\」をひとつの「\\...
-
java独学でのポイント
-
子プロセスで発生した例外を親...
-
VBA Evaluate関数 型が一致しま...
-
時間の取得
-
VB.Net Object型 空かどうか
-
VB.NETで16進数が正しいかどう...
-
javaのコンパイルエラーが解決...
-
数字か文字列かを判定する関数
-
文字列からダブルクオートの削除
-
インスタンス参照でアクセスで...
-
C++で*thisは何を指しているの...
-
singletonクラスとは???
-
メソッドが値を返すとき
-
C# インスタンスの破棄
-
DataGridViewでセルクリックイ...
-
javaのプログラムが止まる
-
複数の変数を宣言する時、同時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
数字か文字列かを判定する関数
-
VBA Evaluate関数 型が一致しま...
-
【JAVA】与えられた金額を貨幣...
-
VC++におけるCStringの変換
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
C#の捕捉されない例外処理の対...
-
ファイルダイアログを開いた時...
-
C# マルチスレッドにおける例外...
-
0除算の例外処理ができない!!...
-
時間の取得
-
Timestamp型への変換について(J...
-
例外ってIf文の中に入れますか...
-
Excelでのエラー
-
文字列が数字のみで構成されて...
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
VBA 400エラー 1004エラー
おすすめ情報