私は理解していないC#を使っているC++開発者です。コードの形式は基本的には奇妙なフロー制御コード
bool method (params)
{
...
try
{
Do Some Stuff with some manual throws and some method calls;
}
catch (Exception e)
{
if (e is SomeSpecificTypeOfException)
throw e;
else
return false;
}
finally
{
Do Some More Stuff;
}
...
return true;
}
このコードをどのように解釈すればよいですか?仲間の開発者は、このタイプの使用法は見たことがないと言いますが、おそらく "最後には常にメソッドを終了する前に行う"と言います。つまり、キャッチしてからrethrowが最後にeをスローする前にキャッチ/リターンを返します。最後に。これは正しいです?
はい、 'finally'はメソッドを終了する直前に(' return'または 'throw'を介して)実行されます。 – Blorgbeard
ここに例外処理のドキュメントへのリンクがあります:https://msdn.microsoft.com/en-us/library/ms173162.aspx – astidham2003
重要なことに注意することは、そのような再スローさせるとスタックトレースが壊れることになります。 'throw;'はスタックトレースを保持します。 – Phaeze