2010-12-20 23 views
3

ブロックに例外がスローされない場合、try/catchはパフォーマンスに影響しますか?
try/catch/finallycatch節がパフォーマンスに影響を与えますか?

+0

の可能複製(http://stackoverflow.com/questions/1308432/do try-catch-blocks-hurt-performance-except-except-throwされない場合) –

+0

@HPTこれはどのような質問ですか? try/catchは、すべての種類の例外を処理するためにすべてのメソッドのために必須です。ソフトウェア製品が正常に機能しなくなったり、エラーから回復できない場合は、どのようなソフトウェア製品を使用しますか?基本的なもの自体が弱いときにパフォーマンスが必要とするもの –

+0

可能性のある複製http://stackoverflow.com/questions/1771216/is-there-really-a-performance-hit-when-catching-exceptions –

答えて

2

例外ははもちろん、パフォーマンスに影響します作成されている(そしてそれは、彼らがキャッチさ、されているかどうかです)。通常、コードのその時点で例外がある場合は、を実行する必要がある場合にのみ、例外をキャッチします。

潜在的な障害の発生後にリソースをクローズしたり、その他の必要なタスクを実行する目的で、単にtry/finallyブロックを使用できます。 finallyはまだ実行されますが、プロセス内で例外をキャッチしていないだけです。むしろ、それはどこに行く必要があるかにまで泡立たせます。

+0

あなたの答えは間違っていることは何もありませんが、私は小さな点を作りたいと思っていました。例外をキャッチするかどうかに関係なく、パフォーマンスには実質的な影響はありません(アプリケーションがどこからでも*扱えない場合は、アプリケーションがクラッシュするという明白な影響を除いて)。私はその詳細を追加するのは、OPが例外を捕まえるか何らかの効果があるかどうかに集中しているように見えるからです。あなたが注意しているように、それは「重い」、扱わない/しない例外の*作成*です。 –

+0

@Andrew Barber:そうだね。あなたの答えは間違いなく私のものよりもその部分を言いました。私は、元の質問に接していると思われるものを捉えたくないときに捉えたくないという点にもっと集中していました。私は、例外をキャッチして、単に投げ直すだけでなく、新しい(カスタム)例外をインスタンス化し、キャッチした例外をそれに追加するという、たくさんのコードを見てきました。 – David

+0

私は、不必要に後者を行うコードを見てきましたが、UIのブロック中に何百回も反復するきわめてタイトなループの中で、少なくとも10%の反復で例外が発生することが予想されます。楽しい時間! –

2

try/catchは、例外がスローされた場合にのみパフォーマンスに影響します(しかし、それでも例外が作成されているためにtry/catchが原因です)。

try/catch/finallyは、追加のオーバーヘッドをtry/catchに追加しません。

0

いいえ、例外がスローされない場合、try/catchブロックはパフォーマンスコストを発生させません。

ここでこれについての素晴らしいMSDNの記事を読む

:[?例外がスローされていないとき/ catchブロック傷つけるの性能を試しください] http://msdn.microsoft.com/en-us/library/ms973839.aspx

関連する問題