Delphi での例外処理に関する 2 つの非常に基本的な質問です。
1) いつTry
?私の推測では、Try
周りに句は必要ありません
- 割り当て、条件、ループなどの単純なコード
- VCL コンポーネントへのアクセス
しかし、私はする必要がありますTry
- データベース アクセス
- 例外が発生するかどうかわからないため、サードパーティのコンポーネント
- ヘルプ システムが表示するものはすべて、例外を発生させる可能性があります
何か見逃しましたか?
2) 試して... 最後に、または試して... を除いて... または両方? @RRUZが私の質問の1つにいくつかのコードで 答えるまで、私は何年もの間、これはどちらか/または選択であると考えていました
try
CoInitialize(nil);
try
SetStaticIpAddress('Network card name','192.168.1.1','255.255.255.0');
finally
CoUninitialize;
end;
except
on E:EOleException do
Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
CoInitialize(nil);
質問: それ以外は、からまたはからの例外をキャッチするだけSetStaticIpAddress('Network card name','192.168.1.1','255.255.255.0');
ですか?
別の言い方をすれば、私のケーキを食べて、最後にトライアウトでベストトライをすることは可能ですか?
[更新] #2 への答えはイエスのようです。このコードは両方のダイアログ ボックスを表示します ...
procedure TForm3.FormCreate(Sender: TObject);
var x, zero : Integer;
begin
zero := 0;
try
try
x := 42 div zero;
finally
MessageDlg('Divide by zero finally', mtInformation, [mbOK], 0);
end;
Except
on E: Exception do
MessageDlg('Divide by zero exception handled', mtInformation, [mbOK], 0);
end;
end;