try〜except文で例外処理を行なおうと思っています。
exceptへ飛ぶ例外の発生条件はどのようなものになるのでしょうか?
(0除算では発生することを確認しました)
今回、配列を突き破って不正アドレスにアクセスした場合に
例外が発生すると思い込んで、try〜except文で処理を行なおうと
していたのですが、例外は発生していないようでした。
お聞きしたい点は以下です。
1.メモリの不正アクセスでは例外は発生しませんか?
2.例外の発生条件一覧のようなものはないでしょうか?
3.例外の発生条件は環境(WindowsのバージョンやCPU)に因りますか?
(何かに依存するものですか?)
※raiseで明示的に例外を発生させることは可能でしたが
デフォルトの例外についてお聞きしたいと思います。
--------------------------------------------------------
TForm1.Button1Click(Sender: TObject);
var
Test:array[0..1]of Integer;
Count:Integer;
begin
Count := 2;
try
Test[Count] := 10; // ←例外が発生するはず!と思いましたが・・
except
showmessage('エラー!'); // ←飛びません
end;
end
--------------------------------------------------------
宜しくお願いします。
[プロジェクトオプション]−[コンパイラ]−[実行時エラー]の
範囲チェックにチェックをつけたら、例外を発生させることができました。
とか?
なにぶん、素人なものでみごとに外してるかもですが、
お許しくださぃ(´・ω・`)ショボーン
ょくゎかんなぃのですが... さま
回答ありがとうございます。
その通り発生させることが出来ました。
回答
1.コンパイルオプションで発生させることが可能。
2.不明・・・
3.コンパイルオプションに因る。他は不明。
ありがとうございました。
2.3.についてお分かりの方いらっしゃいましたら、宜しくお願いします。
ひとまず解決とさせていただきます。
> 2.例外の発生条件一覧のようなものはないでしょうか?
Delphi6, 7 では、
[ツール|デバッガオプション|OSによる例外]があります。
Delphi3 にはありません。
さどやまさま
回答ありがとうございます。
Delphi2005でも例外の一覧を確認できましたので報告させて頂きます。
[ツール]→[オプション]→[デバッガオプション]→[Borlandデバッガ]→[ネイティブOSによる例外]
ありがとうございました。
ツイート | ![]() |