例外の発生条件について

解決


ゆうこ  2005-12-06 01:30:53  No: 19058

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
--------------------------------------------------------

宜しくお願いします。


ょくゎかんなぃのですが...  2005-12-06 01:41:11  No: 19059

[プロジェクトオプション]−[コンパイラ]−[実行時エラー]の
範囲チェックにチェックをつけたら、例外を発生させることができました。

とか?

なにぶん、素人なものでみごとに外してるかもですが、
お許しくださぃ(´・ω・`)ショボーン


ゆうこ  2005-12-06 02:00:33  No: 19060

ょくゎかんなぃのですが... さま

回答ありがとうございます。
その通り発生させることが出来ました。

回答
1.コンパイルオプションで発生させることが可能。
2.不明・・・
3.コンパイルオプションに因る。他は不明。

ありがとうございました。
2.3.についてお分かりの方いらっしゃいましたら、宜しくお願いします。
ひとまず解決とさせていただきます。


さどやま  URL  2005-12-06 06:54:53  No: 19061

> 2.例外の発生条件一覧のようなものはないでしょうか?
 Delphi6, 7 では、
[ツール|デバッガオプション|OSによる例外]があります。
Delphi3 にはありません。


ゆうこ  2005-12-07 02:05:50  No: 19062

さどやまさま
回答ありがとうございます。
Delphi2005でも例外の一覧を確認できましたので報告させて頂きます。

[ツール]→[オプション]→[デバッガオプション]→[Borlandデバッガ]→[ネイティブOSによる例外]

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加