タグ付けされた質問 「exception-handling」

例外は、プログラムの通常のフローからの逸脱を必要とする異常な状態です。通常、例外は完全に失敗することはなく、代わりに例外ハンドラーが付きます。例外処理は、多くのプログラミング言語に組み込まれている構造です。通常、例外はスタックを巻き戻し、例外のスコープ外の定義された状態にロールバックしてからハンドラーブロックまたはルーチンを呼び出すことによって処理されます。

12
whileループを使用せずに最も内側の例外を見つけますか?
C#が例外をスローすると、内部例外が発生する可能性があります。私がやりたいのは、最も内側の例外、つまり、内側の例外がないリーフ例外を取得することです。これはwhileループで実行できます。 while (e.InnerException != null) { e = e.InnerException; } しかし、代わりにこれを行うために使用できるワンライナーがあるかどうか疑問に思いました。

7
複数の@ ControllerAdvice @ ExceptionHandlersの優先順位を設定する
で注釈が付けられた複数のクラスがあり@ControllerAdvice、それぞれにの@ExceptionHandlerメソッドがあります。 Exception特定のハンドラーが見つからない場合は、これを使用することを意図して処理します。 悲しいことに、Spring MVCExceptionは、より具体的なケース(IOExceptionたとえば)ではなく、常に最も一般的なケース()を使用しているようです。 これは、Spring MVCの動作をどのように期待するのでしょうか?私はJerseyのパターンをエミュレートしようとしていExceptionMapperます。これは、各(同等のコンポーネント)を評価して、処理する宣言された型がスローされた例外からどれだけ離れているかを判断し、常に最も近い祖先を使用します。

7
いつ、どのように例外処理を使用する必要がありますか?
例外処理について読んでいます。例外処理とは何かについていくつかの情報を入手しましたが、いくつか質問があります。 いつ例外をスローしますか? 例外をスローする代わりに、戻り値を使用してエラーを示すことはできますか? try-catchブロックですべての関数を保護すると、パフォーマンスが低下しませんか? いつ例外処理を使用しますか? そのプロジェクトのすべての関数にtry-catchブロックが含まれているプロジェクトを見ました(つまり、関数全体のコードがtry-catchブロックで囲まれています)。これは良い習慣ですか? try-catchと__try__exceptの違いは何ですか?


7
Javaメソッド宣言でthrowsを使用するのはいつですか?
そのため、Javaでの例外処理について基本的には十分に理解していると思いましたが、最近、混乱と疑問を与えるコードを読んでいました。ここで取り上げたい主な疑問は、次のようなJavaメソッド宣言をいつ使用する必要があるかということです。 public void method() throws SomeException { // method body here } 私が収集したいくつかの同様の投稿を読んだところ、throwsは、メソッドの実行中にSomeExceptionがスローされる可能性があるという一種の宣言として使用されています。 私の混乱は、次のようなコードから来ています。 public void method() throws IOException { try { BufferedReader br = new BufferedReader(new FileReader("file.txt")); } catch(IOException e) { System.out.println(e.getMessage()); } } この例でスローを使用したい理由はありますか?IOExceptionのような基本的な例外処理を行っているだけの場合は、try / catchブロックが必要になるだけのようです。

5
何かを「投げる」とき、それはメモリのどこに保存されますか?
何かがthrownの場合、スタックはキャッチされるまで「巻き戻され」、各関数コンテキストのスタック上のクラスインスタンスのデストラクタが実行されることを理解しています(そのため、デストラクタから例外をスローしないでください)。 -あなたは2番目のものを投げることになるかもしれません)...しかし、これが起こっている間、私が投げたオブジェクトはメモリのどこに保存されているのだろうか? 実装に依存しますか?もしそうなら、最も人気のあるコンパイラで使用される特定の方法はありますか?

5
Google Analyticsanalytics.js例外追跡からの例外のレポート
Google UniversalAnalyticsにはヒットタイプの例外があります ga('send', 'exception', { 'exDescription': 'DatabaseError' }); Google Analyticsコンソールにアクセスして、「イベント」と同じレベルの例外レポートを見つけることができると期待していましたが、どこにも表示されません。 AndroidとiOSのAPIは言ってCrash and exception data is available primarily in the Crash and Exceptions reportいますが、その名前のレポートは見つかりません。

5
例外が特定のタイプであるかどうかを判断する方法
トライキャッチコードがあります: try { ... } catch(Exception ex) { ModelState.AddModelError( "duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique"); } このコードでは、データベースにレコードを挿入しようとしています。dbaは、データベースが重複をチェックし、重複がある場合はエラーを返すように設定しています。現在、ご覧のとおり、どのようなエラーが発生しても、同じエラーをモデルに追加しています。このエラーは、dbaによって設定された重複エラーが原因である場合にのみモデルに追加されるように変更したいと思います。 以下は私がキャッチしたいエラーです。内部例外にあることに注意してください。誰かがこれを具体的に捕まえる方法を教えてもらえますか?

28
なぜJavaの人々は頻繁に例外を黙って消費するのですか?
これまで本格的なJavaコーディングを行ったことはありませんでしたが、既存のスキル(DelphiとC#)に基づいて構文、ライブラリ、概念を学びました。私がほとんど理解していないことの1つは、次のprintStackTraceようにした後、例外を黙って消費するコードをたくさん見たことです。 public void process() { try { System.out.println("test"); } catch(Exception e) { e.printStackTrace(); } } 私が遭遇したほとんどすべてのJavaの記事とプロジェクトには、このようなコードがあります。私の知識に基づくと、これは非常に悪いことです。ほとんどの場合、例外は次のように外部コンテキストに転送されます。 public void process() { try { System.out.println("test"); } catch(Exception e) { e.printStackTrace(); throw new AssertionError(e); } } ほとんどの場合、例外は、基盤となるフレームワーク(Java Swingなど)に属する最も外側のループで処理されるはずです。Javaの世界でこのようにコーディングするのが標準のように見えるのはなぜですか?困惑しています。 私の経歴に基づいて、printStackTraceを完全に削除したいと思います。私は単に未処理の別名RuntimeException(または、さらに良いAssertionError)として再スローし、それを最も適切な場所であるフレームワークの最も外側のループでキャッチしてログに記録します。 public void process() { try { System.out.println("test"); } catch(Exception e) { throw new AssertionError(e); …

9
throws宣言を追加せずに例外をスローする方法はありますか?
私は次のような状況にあります。 別の基本クラスを継承し、メソッドをオーバーライドするJavaクラスがあります。基本メソッドは例外をスローしないため、throws ...宣言はありません。 これで、自分のメソッドで例外をスローできるはずですが、どちらかを選択できます。 例外を飲み込む スロー宣言を追加する 最初のものは例外を黙って無視するため(ログを実行できます)、2番目のものはメソッドヘッダーが異なるためにコンパイラエラーを生成するため、どちらも満足のいくものではありません。 public class ChildClass extends BaseClass { @Override public void SomeMethod() { throw new Exception("Something went wrong"); } }

7
Elmahがasp.netサイトで動作していません
asp.netサイトでelmahを使用しようとしましたが、http:// localhost:port / elmah.axdにアクセスしようとすると、リソースが見つからないという例外が発生します。私のweb.configを以下に示します。 <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/> </sectionGroup> </configSections> <elmah> <security allowRemoteAccess="0" /> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql" /> <errorMail from="my@account" to="myself" subject="ERROR From Elmah:" async="true" …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.