問題タブ [try-catch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
9733 参照

c++ - std::bad_alloc をキャッチするポリシー

そのため、私は自分の開発で Qt をよく使用し、気に入っています。Qt オブジェクトの通常の設計パターンは、 を使用してそれらを割り当てることnewです。

std::bad_allocほとんどすべての例 (特に Qt デザイナーによって生成されたコード) は、例外のチェックをまったく行いません。割り当てられるオブジェクト (通常はウィジェットなど) は小さいため、これが問題になることはほとんどありません。結局のところ、20 バイト程度の割り当てに失敗した場合、問題を解決するためにできることはほとんどありません。

現在、「大きな」(サイズが 1 ページまたは 2 ページを超えるもの) 割り当てを try/catch でラップするポリシーを採用しています。それが失敗した場合は、ユーザーにメッセージを表示します。ほとんどの場合、それよりも小さいメッセージを表示します。アプリをクラッシュさせてstd::bad_alloc例外を発生させます。

では、これについてどのような学派が考えているのだろうか?

newすべての操作をチェックするのは良い方針ですか? それとも、失敗する可能性があると私が予想するものだけですか?

また、リソースがはるかに制限される可能性がある組み込み環境を扱う場合は、明らかにまったく別の話です。私はデスクトップ アプリケーションのコンテキストで質問していますが、他のシナリオに関する回答にも興味があります。

0 投票する
13 に答える
95333 参照

c# - 例外がスローされない場合、try/catch ブロックはパフォーマンスを低下させますか?

try{}Microsoft の従業員とのコード レビュー中に、ブロック内に大きなコード セクションがあることに気付きました。彼女と IT 担当者は、これがコードのパフォーマンスに影響を与える可能性があることを示唆しました。実際、彼らはコードのほとんどを try/catch ブロックの外に置くべきであり、重要なセクションだけをチェックするべきだと提案しました。Microsoft の従業員は、次のホワイト ペーパーで間違った try/catch ブロックに対して警告を発すると付け加えました。

周りを見回したところ、最適化に影響を与える可能性があることがわかりましたが、変数がスコープ間で共有されている場合にのみ適用されるようです。

私は、コードの保守性や、適切な例外の処理について尋ねているわけではありません (問題のコードにはリファクタリングが必要であることは間違いありません)。また、フロー制御に例外を使用することについても言及していません。ほとんどの場合、これは明らかに間違っています。これらは重要な問題ですが (より重要なものもあります)、ここでは焦点を当てていません。

例外がスローされない場合、try/catch ブロックはパフォーマンスにどのように影響しますか?

0 投票する
3 に答える
13661 参照

c++ - C++例外処理はどのようにマシンコードに変換されますか

精神的には、C ++コンパイルがアセンブラーに変換するときに、try / throw/catchが舞台裏でどのように見えるのか常に疑問に思っていました。しかし、私はそれを使用したことがないので、それをチェックすることは決してありませんでした(一部の人々は怠惰と言うでしょう)。

sを追跡するために通常のスタックが使用されますtryか、それともこの目的のためだけに個別のスレッドごとのスタックが保持されますか?MSVCとg++の間の実装は大きいですか、小さいですか?疑似asmを見せてください(IA-32も大丈夫です)ので、自分でチェックする必要はありません!:)

編集:これで、IA-32処理に関するMSVCの実装の基本を理解できました。IA-32のg++、またはその他のCPUについて知っている人はいますか?

編集2(11年後):パフォーマンスに関する いくつかのデータがあります。また、ソースコードを無料で利用できるようにしました。

0 投票する
9 に答える
5284 参照

c# - .NET でフロー制御に try-catch を使用するのは「悪い」ことですか?

私はちょうどプロジェクトで見つけました:

schoolnull 例外が発生すると (理論的には null ではない可能性があるためmyLabel)、実質的にコンピューターが3 回ビープ音を鳴らし、2 秒間スリープ状態になると言って、これを書いたよりも開発者と話したいです。しかし、それについてのルールは記憶違いなのだろうか。明らかに、これは try/catch の使用を意図したものではありませんが、これは意図に反するため悪いのでしょうか、それともパフォーマンスを考慮して悪いのでしょうか? ただ悪いだけのような気もするが、「本当に悪い」以上のことを言いたい。

0 投票する
3 に答える
1282 参照

c++ - C++ で型エラーをキャッチする

結果が正しい型 (int、float、double など) であるかどうかを確認し、そうでない場合に例外をスローしてキャッチするにはどうすればよいですか?

皆さんありがとう、

ヴラド。

0 投票する
2 に答える
2109 参照

c# - C#リアルタイムトライキャッチ

実際にC#でリアルタイムプログラミングを行っている人、または言語の内部を本当に理解している人からの返信をお願いします。

例外は通常の処理を処理するために使用するのではなく、エラー状態を検出するためにのみ使用する必要があることを私は知っています。そのトピックについてはたくさんの議論があります。

try / catchブロックを配置するだけで実行時間が遅くなるかどうかを知りたいです(プログラムを終了する必要がない限り、例外をキャッチすることはありません)。try / catchブロックは、繰り返し呼び出す必要のある関数内にあります。最小限のコストしかないと思います。

コストは、CPUサイクル、その他のタスク(浮動小数点乗算と同じコスト)、または別の方法で定量化できますか?

Windows XPではMicrosoftC#.Net3.5を使用しています。

0 投票する
5 に答える
40279 参照

php - getimagesize でファイルが見つからない場合のエラー処理

しようとしているときにgetimagesize($img)画像が存在しない場合、エラーが発生します。ファイルが存在するかどうかを最初に確認したくありません。エラーを処理するだけです。

どのようtry catchに機能するかはわかりませんが、次のようなことをしたいです:

0 投票する
1 に答える
670 参照

nant - TeamCity4.5がnantスクリプトのtrycatch要素を認識しない

私たちのチームは最近TeamCity4.5.4にアップグレードしましたが、TeamCityがnantビルドスクリプトを実行するのに問題があります。

次のようなエラーメッセージが表示されます。Invalid element <trycatch>. Unknown task or datatype.

アップグレード中またはアップグレード後にビルドスクリプトを変更していないので、これを再び機能させるには、変更が必要な場合はどうすればよいのでしょうか。

問題を引き起こしているスクリプトの部分は次のとおりです。

他の誰かがこの問題を経験しましたか?

0 投票する
7 に答える
49084 参照

java - Java 例外がキャッチされない

でキャッチされない Java の例外があるのはなぜcatch (Exception ex)ですか? これは、未処理の例外でコードが完全に失敗することです。(Java バージョン 1.4)。

私はException in thread "main" java.lang.NoSuchMethodError

しかし、これは機能します

私は得るCaught NoSuchMethodError java.lang.NoSuchMethodError:

例外をキャッチするとすべての例外がキャッチされると思いましたか? Javaですべての例外をキャッチするにはどうすればよいですか?

0 投票する
2 に答える
903 参照

sql-server - SQL エラーのロギング

SQL Server 2008 には、新しい try/catch 構造があります。入れ子になった一連のストアド プロシージャでエラーが発生した場合は、呼び出し履歴をエラー テーブルに記録したいと考えています。問題は、トランザクションを開始した場合 (これはデータベースを更新する操作に当てはまります)、try/catch ステートメントのキャッチ部分のコードがトランザクションをロールバックすると、エラー テーブルに書き込まれたレコードが削除されることです。 .

これを回避する方法についてのヒントは大歓迎です。