Delphi の 2 つのコーディング パターンに実際的な違いはありますか。
バージョン 1
try
try
{Do something}
finally
{Do tidy up}
end
except
{Handle exception}
end;
バージョン 2
try
try
{Do something}
except
{Handle exception}
end
finally
{Do tidy up}
end;
Delphi の 2 つのコーディング パターンに実際的な違いはありますか。
バージョン 1
try
try
{Do something}
finally
{Do tidy up}
end
except
{Handle exception}
end;
バージョン 2
try
try
{Do something}
except
{Handle exception}
end
finally
{Do tidy up}
end;
2つの違いがあります。
通常、あなたは最終的に発生するブロックについて心配していません。あなたは単にそれが起こることを期待していません、そしてもしそうなら、何かがおそらく非常に壊れています。
したがって、重要な違いは、finallyが例外ハンドラの前に実行されるか、またはその逆であるかです。時々それは問題ではありませんが、それはしばしば違いを生みます。
try..except以下の行を使用すると実行されます。
Resource := TAbstractResource.Create;
try
Resource.DoSomeThing;
except
On E:Exception Do
HandleException(E);
end;
FreeAndNil(Resource);