である場合にのみ、私は三部構成のアプリケーション(CATIA V5)でオブジェクトを更新し、私のC#のヘルパーライブラリの次の機能を持たせてコードを実行します。それは避けられないC#トライキャッチ最終的に例外が未処理
public void Update(INFITF.AnyObject objectToUpdate)
{
try
{
Part.UpdateObject(objectToUpdate);
}
catch
{
throw new InvalidOperationException("Update Failed");
}
finally
{
Part.Inactivate(objectToUpdate);
}
}
をPart.UpdateObject()
が失敗することがあります。
これが失敗した場合、関数のユーザーに更新が失敗したことを通知し、問題をカスタム方法で修正して例外を処理したり、例外をデフォルトの安定した方法。
例外が未処理の場合はfinally
ブロックが呼び出されないため、私が掲載したコードはうまくいかないことがわかりました...しかし、うまくいけばコードブロックがアイデアを得ることを願っています。
UPDATE:
私は十分によく私のシナリオを説明していないので、私は明確にしましょう。私は、他の人が開発するときにこの機能を使用しています。これらのプログラマーの中には、try/catchブロックの使い方や、そうでないものがあります。関数を呼び出すことができる2つのサンプルシナリオを次に示します。
A.ユーザーはtry/catchブロックに精通しており、なぜ更新呼び出しが失敗する可能性があるかを認識しています。
B.ユーザーは更新が私たちが作る安定した方法で失敗した更新を処理するこのシナリオでは
Update(objectToUpdate)
を失敗する可能性のtry/catchブロックに精通していないか、認識していません初心者プログラマーに感謝し、アプリケーションがクラッシュするのを防ぎます。 (この場合、サードパーティのCADソフトウェアで問題のオブジェクトを無効にする)
私はキャッチにイベントを発生させる代わりに、再び投げ検討したいです。または、クライアントにリトライロジックを処理させます。 – axlj
[例外がスローされたかどうかに関係なく、finallyブロックは常に実行されます。](https://msdn.microsoft.com/en-us/library/ke0zf0f5(v = vs.110).aspx) –
ここに表示されます:https://msdn.microsoft.com/en-us/library/zwc8s4fz.aspx例外が処理されていない場合にfinallyブロックが実行されないのは、try-finallyブロックのみでtrue try-catch-finallyブロックではtrueです? – Eric