CIL の静的解析ツールを作成しています。finally ブロックが try-catch ブロックとして解釈され、catch 内で再スローされると、制御フロー分析が簡素化されます。C# では、次の違いがわかりません。
try
{
// ...
}
finally
{
// finally code here
}
と
try
{
// ...
}
catch
{
// finally code here
throw;
}
または間
try
{
// ...
}
catch(Exception e)
{
// catch code here
}
finally
{
// finally code here
}
と
try
{
try
{
// ...
}
catch (Exception e)
{
// catch code here
}
}
catch
{
// finally code here
throw;
}
CIL には、finally ブロックと endfinally 命令さえあります。違いがあるはずですよね?