例外処理の基礎知識

保護コード
例外が発生する可能性があるコードのことです。
少しでも例外が発生する可能性があれば、保護すべきコードとなります。
例外クラス,例外型
ゼロ除算、オーバーフロー、ファイルエラーなど、例外の種類で分けれたクラスです。
例外ハンドラ
try
  { 保護するコード }
exept
  on 例外クラスA do 例外ハンドラA;
end;

ある特定の種類の例外に対して処理を行うハンドラのことです。

クリーンアップコード
リソースの開放など、例外が発生した時も必ず実行すべきコードのことです。
finaly節の処理としてよく使われます。
{ 割り当て処理 }
try
 { 保護コード }
finaly
 {クリーンアップコード}
end
組み合わせた例外処理
try
  try
    {保護コード }
  except 
    on 特定の例外クラス do 特定の例外ハンドラ
  end;
finaly
   {クリーンアップコード }
end;
例外の伝播
例外処理においては、例外の発生箇所がサブルーチンなどの場合もあるので、
親の階層のルーチンや、外側に例外を伝播する必要がある場合があります。
デフォルト例外ハンドラとその弊害
except else〜など、正体不明の例外でもすべて処理してしまうような、デフォルト例外ハンドラというものがあります。しかし、予測できる例外に対する処理だけを行うようにしないと、問題が隠されてしまう可能性があるので、
これはなるべく使わないようにするのが普通です。

VisualBasic?

例外処理

On Error Goto Label 文
エラーが発生したときに指定したラベルに飛びます。
On Error Resume Next 文
エラーを無視して続行します。

トレース

Debug.Print 〜文
イミディエイトウィンドウに表示します。

Delphi

try 〜 except on do end 構文
例外をキャッチします
try
   {ステートメントリスト }
except
    on 例外1 do ルーチンまたは処理;
    on 例外2 do ルーチンまたは処理;
else
   {デフォルトの例外ハンドラ}
end;
例外のいくつか
EZeroDivide?ゼロ除算
EOverflowオーバーフロー
try 〜 finaly 構文
例外がおきても必ず実行するブロックを定義します。

生成された例外が finally で処理されない場合,その例外は try...finally 文を越えて伝わり,try 節で既に生成されている例外は失われます。

例外型

Delphiでは、例外型というものが宣言できます。

type EInOutError = class(Exception)
   ErrorCode: Integer;
end;

C++

  1. try 〜 catche 文

ActionScript?

  • トレース
trace文
トレースウィンドウに内容を表示します

PHP

デバッグ

echo