問題タブ [exception-handling]
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.
.net - 例外処理
構造化例外処理は悪いですか? 例外を処理する正しい方法は何ですか?
編集: C# を使用した .NET での例外処理。
通常、特定の例外クラス (DivideByZeroException、ArrayTypeMismatchException) のセットがあり、一般的な "catch (Exception ex)" はありません。
この背後にある考え方は、特定の種類の例外が発生し、それらが発生したときに特定のアクションが定義され、予期しない例外がインターフェイス (ウィンドウまたは Web) に表示されることを期待しているということです。これは良い習慣ですか?
exception - 例外を回避するタイミングと例外を処理するタイミング
メソッドに例外をかわす (つまり、例外を伝播させる) か、例外を受け取った後にそれを処理するかを決定する際に、どのガイドラインを使用しますか?
ここに私が尋ねようとしているものの例があります
method1、2、3、および 3 の 3 つのメソッドがある場合、Method1 は Method3 を呼び出す Method2 を呼び出します。そして、例外は、次のように例外を上方に伝播させる必要がある場合にのみメソッド3でスローされます(疑似Javaを許してください;))
そして、次のように例外が発生したら、いつ例外を処理する必要がありますか
vb.net - キャッチブロックを試す
私は次のコードを持っています
セクション-1で処理されるコードによってExceptionType1がスローされたとします。セクション1でそれを処理した後、セクション2 /セクション3に制御を渡すことができますか?それは可能ですか?
c# - クラッシュ データを収集する最良の方法は何ですか?
だから私は、プログラムから自動的にデータを収集しようとする概念、つまり、何か問題が発生したときにユーザーにレポートを送信するように求めるダイアログ ボックスをポップアップ表示するという概念に納得しています。
私は MS Visual Studio C# で作業しています。
実装の観点から、メインの program.cs ファイルのアプリケーションが実行される場所に try/catch ループを配置することは理にかなっていますか? このような:
または、より具体的な例外の種類をキャッチするために、コードの一部に try/catch ループを配置することは理にかなっていますか? (これは新しいアプリケーションであり、より具体的な例外キャッチを入れることは、何がうまくいかないかについての考えを持っていることを意味します...私はそうではありません。それが、上記が私にとって理にかなっているように見える理由です.)
-アディーナ
c++ - std::cout または std::ofstream(file) から std::ostream を取得します。
特定のプログラム条件に応じて、a をオブジェクトまたはstd::ostream
オブジェクトにバインドするにはどうすればよいですか? これは多くの理由で無効ですが、意味的には次のものと同等のものを実現したいと考えています。std::cout
std::ofstream
http://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.htmlの例など、例外セーフではない例をいくつか見ました。
より優れた例外セーフなソリューションを知っている人はいますか?
c++ - main(...) で例外をキャッチするのは理にかなっていますか?
私はそのようなプロジェクトでいくつかのコードを見つけました:
例外がキャッチされる理由がわかりません。そうでない場合、アプリケーションは単純に終了し、例外が出力されます。
ここで例外をキャッチする正当な理由はありますか?
編集:例外エラーを出力するのが良いことに同意します。ただし、例外を再スローした方がよいのではないでしょうか? ここで飲み込んでいるような気がします...
c# - ArgumentNullException のスロー
何らかのオブジェクトを引数として取るメソッドがあるとします。ここで、このメソッドに null 引数が渡された場合、それは致命的なエラーであり、例外がスローされる必要があるとします。このようなコードを作成する価値はありますか (これは些細な例であることを念頭に置いてください)。
それとも、x.doSomething() を呼び出すときに NullException をスローすることに頼っても安全ですか?
次に、 someMethod がコンストラクターであり、別のメソッドが呼び出されるまで x が使用されないとします。すぐに例外をスローするか、x が必要になるまで待ってから例外をスローする必要がありますか?
java - 自動化された例外処理
次の機能を備えたJVMの現在の状態のスナップショットを取得できる何かが(Javaの世界に)存在するかどうか疑問に思っていました:
- 例外がスローされている間に実行してください。
- ローカル変数、メソッドの引数などをキャプチャします。
- ソースコードの状況をIDEで抽出または再現するために使用できる便利なファイルに入れます。
最初の 2 つの機能が必要です (3 つ目の機能はすばらしいでしょう)。また、本番環境での使用に適している必要があります (したがって、デバッガーについてはありません)。
これを尋ねる前に、私は WWW を (可能な限り) 検索し、いくつかの指針を見つけました。
- Cajoon Interceptor : Dzone の投稿で述べたように、3 つの要件を満たすパッシブ JVM エージェントです。しかし、これには 2 つの欠点があります。料金を支払わなければならないことと、サイトがダウンしていることです (支払う機会がない可能性があります)。
- AviCode Intercept Studio : Cajoon の .NET に相当するもの。いくつかの洞察を与えるだけです。
- JavaFrame : わかりました、ツイートですが、問題ないように見える JVM エージェントのソース コード (MIT ライセンスに基づく) を含む利用可能な SVN リポジトリを指しています (試してみます)。
それで、多分私は存在しない解決策を探していますか?緊急ではありませんが、私はあるプロジェクトについてこのアイデアを思いつきました。この「未知の」(?) パスを探索して、何か現実のものを得ることができれば素晴らしいと思います。
JVM エージェントであることは明らかなようです (たとえば、JVMTI からの例外イベント)。
最後に、ウィキペディアの例外処理の記事から次の段落を強調します。
Java や .NET などのランタイム エンジン環境には、ランタイム エンジンに接続するツールが存在し、対象の例外が発生するたびに、例外がスローされた時点でメモリに存在していたデバッグ情報を記録します (コール スタックとヒープ)。値)。これらのツールは、自動例外処理またはエラー インターセプト ツールと呼ばれ、例外の「根本原因」情報を提供します。
それがアイデアです。誰かが私に洞察を与えてくれることを願っています。あるいは、将来、誰かがこの謙虚な投稿に触発されることを願っています:)
ありがとう!
winforms - 例外処理を集中化する必要がある場合、WinForm コンポーネントの設計に欠陥がありますか?
または、未処理の例外がアプリを強制終了する最初の呼び出しポートとして gui ウィジェットを持つ他の設計はありますか?
私たちは皆、1 つのメインを望んでいます: 顔を保存する目的で「キャッチオール」(ほとんどの場合、これには「続行」機能はありません) が、最初の呼び出しポートである GUI ウィジェットを使用して簡単に実装することは不可能です。この設計に欠陥がありますか、それともトリックがどこかに欠けていますか?
言語の設計者による記事を読んでいて、彼は例外処理を集中化する必要があると述べ、最初に頭に浮かんだのはこれが困難になる WinForm イベントメカニズムだったので、これを尋ねます。
WinForm/GUI チームは彼の話を聞いていましたか、それとも遅すぎたのでしょうか?
language-agnostic - 例外の処理方法
私のテクニカルリードは、この例外メカニズムを主張しています。
1242は、OurException以外の例外を処理するcatchメソッドの識別子です。プロジェクト内のすべてのcatchブロックには一意の識別子が必要です。これにより、ログを確認することで例外が発生した場所を知ることができます。
すべてのメソッドについて、OurExceptionをキャッチしてスローする必要があります。他のタイプの例外がスローされた場合は、ログに記録し、OurExceptionでマスクしてから再スローする必要があります。
これは合理的なアプローチですか?もしあれば、より良い選択肢は何ですか?
編集:スタックトレースはリリースモードでは意味のある結果を生成しないと言われました。一般的な例外をキャッチしてスローすることは問題ないことを提案していますか?
Edit2:ありがとうございます。私はこれに対する私の議論の一部としてあなたの答えを使用しましたが、あなたは十分な経験がなく、実際の状況に対処する方法を知らないと言われました。私はこのように行かなければなりません。