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

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

4
「EXC_BREAKPOINT(SIGTRAP)」の例外は、ブレークポイントのデバッグによって発生しますか?
私はすべてのテストマシンで非常に安定していて、ほぼすべてのユーザーに対して安定しているように見えるマルチスレッドアプリを持っています(クラッシュの苦情がないことに基づいています)。ただし、クラッシュレポートを送信してくれた1人のユーザーにとって、アプリは頻繁にクラッシュします。すべてのクラッシュレポート(最大10個の連続したレポート)は基本的に同じように見えます。 Date/Time: 2010-04-06 11:44:56.106 -0700 OS Version: Mac OS X 10.6.3 (10D573) Report Version: 6 Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000002, 0x0000000000000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 com.apple.CoreFoundation 0x90ab98d4 __CFBasicHashRehash + 3348 1 com.apple.CoreFoundation 0x90adf610 CFBasicHashRemoveValue + 1264 2 com.apple.CoreText 0x94e0069c …

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

8
JavaScript例外処理
JavaScript内でスローされたすべての例外をキャッチするための最良のテクニックは何ですか? 明らかに、最良のテクニックはtry ... catchを使用することです。ただし、非同期コールバックなどでは、注意が必要になる場合があります。 IEとGeckoのブラウザがwindow.onerrorをサポートしていることは知っていますが、OperaとSafariはどうですか? これが私が中心的な例外処理ソリューションを持ちたいと思うたくさんのテストケースです: // ErrorHandler-Test1 var test = null; test.arg = 5; // ErrorHandler-Test2 throw (new Error("Hello")); // ErrorHandler-Test3 throw "Hello again"; // ErrorHandler-Test4 throw { myMessage: "stuff", customProperty: 5, anArray: [1, 2, 3] }; // ErrorHandler-Test5 try { var test2 = null; test2.arg = 5; } …

6
Pythonの例外が「エラー」と呼ばれるのはなぜですか?
Pythonの例外が「エラー」(例えば命名されているなぜZeroDivisionError、NameError、TypeError)およびない「例外」(例えばZeroDivisionException、NameException、TypeException)。 私はJavaのバックグラウンドを持っており、最近Pythonを学び始めました。これは、Javaではエラーと例外が区別されるため、混乱を招きます。 Pythonにも違いはありますか?
82 java  python  exception 

2
Javaでは、URL接続はいつ閉じますか?
JavaはいつURLへの接続を手放しますか?URLまたはURLConnectionのいずれにもclose()メソッドが表示されないので、リクエストが終了するとすぐに接続が解放されますか?私は主に、例外ハンドラーでクリーンアップを行う必要があるかどうかを確認するように求めています。 try { URL url = new URL("http://foo.bar"); URLConnection conn = url.openConnection(); // use the connection } catch (Exception e) { // any clean up here? }

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
例外のスタックトレースを出力します
例外のスタックトレースをstderr以外のストリームに出力するにはどうすればよいですか?私が見つけた1つの方法は、getStackTrace()を使用して、リスト全体をストリームに出力することです。
81 java  exception 

28
なぜ例外を保守的に使用する必要があるのですか?
例外はめったに使用されるべきではないと人々が言うのをよく見たり聞いたりしますが、その理由を説明することは決してありません。それは本当かもしれませんが、理論的根拠は通常glibです:「それは理由で例外と呼ばれます」これは私には、立派なプログラマー/エンジニアによって決して受け入れられるべきではない一種の説明のようです。 例外を使用して解決できる問題にはさまざまなものがあります。制御フローにそれらを使用するのが賢明でないのはなぜですか?それらがどのように使用されるかについて非常に保守的である背後にある哲学は何ですか?セマンティクス?パフォーマンス?複雑?美学?コンベンション? 以前にパフォーマンスに関する分析を見たことがありますが、一部のシステムに関連し、他のシステムには関連しないレベルです。 繰り返しになりますが、特別な状況のためにそれらを保存する必要があることに必ずしも同意しませんが、コンセンサスの論理的根拠は何であるか疑問に思っています(そのようなものが存在する場合)。
80 c++  exception 

3
Java-8で複数の例外をキャッチする
私の方法で見つけたマルチキャッチ機能を試している間、m1()すべてが期待どおりにうまく機能しています。 ただし、m2()同じコードではコンパイルされません。コードの行数を減らすために構文を変更しました。 public class Main { public int m1(boolean bool) { try { if (bool) { throw new Excep1(); } throw new Excep2(); //This m1() is compiling abs fine. } catch (Excep1 | Excep2 e) { return 0; } } public int m2(boolean b) { try { throw b ? …

2
例外のコレクションを根本原因として渡すにはどうすればよいですか?
一部のメソッドはmyMethod、いくつかの並列実行を呼び出し、それらの終了を待ちます。 これらの並列実行は、例外で終了する可能性があります。したがってmyMethod、例外リストを取得します。 例外リストを根本原因として渡したいのですが、根本原因は単一の例外にすぎない場合があります。確かに私は自分の例外を作成して私が望むものを達成できますが、Java、Spring、またはSpring Batchにこのようなものがすぐに使えるかどうかを知りたいです。
52 java  exception 

5
C#で一般的な例外のすべてのバリアントをキャッチする方法
一般的な例外クラスのすべてのバリアントをキャッチしたいと思います。複数のcatchブロックなしでそれを行う方法があるかどうか疑問に思っていました。たとえば、例外クラスがあるとします。 public class MyException<T> : Exception { public string MyProperty { get; } public MyException(T prop) : base(prop.ToString()) { MyProperty = prop?.ToString(); } } および2つの派生クラス: public class MyDerivedStringException : MyException<string> { public MyDerivedStringException(string prop) : base(prop) { } } public class MyDerivedIntException : MyException<int> { public MyDerivedIntException(int prop) : base(prop) …
22 c#  generics  exception 


1
例外をキャッチして再スローするが、例外ではない
私は次のようなコードに遭遇しました: void run() { try { doSomething(); } catch (Exception ex) { System.out.println("Error: " + ex); throw ex; } } void doSomething() { throw new RuntimeException(); } このコードは私を驚かせます。- methodはそれをキャッチしてから再スローするため、をスローrun()できるように見えますが、メソッドがスローするように宣言されておらず、明らかにそうである必要はないからです。このコードは問題なくコンパイルされます(少なくともJava 11では)。ExceptionExceptionException 私の予想ではthrows Exception、- run()メソッドで宣言する必要があるでしょう。 追加情報 同様に、if doSomethingがスローするように宣言されている場合、キャッチされて再スローされても、-methodで宣言するIOExceptionだけで済みIOExceptionます。run()Exception void run() throws IOException { try { doSomething(); } catch (Exception ex) { System.out.println("Error: …
10 java  exception  throws 

2
nullポインタ引数と不可能な事後条件を使用して標準例外を構築します
次のプログラムを検討してください。 #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } libstdc ++を使用したGCCおよびClang std::terminateは、メッセージを表示してプログラムを呼び出し、中止します terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid 例外の構築時にlibc ++のClangがsegfaultします。 godboltを参照してください。 コンパイラは標準に準拠していますか?標準の関連セクション[diagnostics.range.error](C ++ 17 N4659)は言っていstd::range_error有するconst char*好まれるべきであるコンストラクタのオーバーロードconst std::string&オーバーロード。このセクションでは、コンストラクターの前提条件についても述べておらず、事後条件についてのみ述べています。 事後条件:strcmp(what(), what_­arg) == 0。 what_argnullポインターの場合、この事後条件は常に未定義の動作を持っています。つまり、これは私のプログラムにも未定義の動作があり、両方のコンパイラーが準拠して動作することを意味しますか?そうでない場合、標準でそのような不可能な事後条件をどのように読むべきですか? 考え直してみれば、それは私のプログラムにとって未定義の動作を意味しているに違いないと思います。そうしないと、(有効な)ヌル終了文字列を指さないポインタも許可されるため、明らかに意味がありません。 …

2
CATCHブロックでの例外と失敗の区別[RAKU]
失敗はCATCHブロックで処理できることがわかっています。 次の例では、「AdHoc」障害(other-sub内)を作成し、CATCHブロック(my-sub内)で例外を処理します。 sub my-sub { try { CATCH { when X::AdHoc { say 'AdHoc Exception handled here'; .resume } default {say 'Other Exception'; .resume} } my $b = other-sub(); $b.so ?? $b.say !! 'This was a Failure'.say; } } sub other-sub { fail 'Failure_X' } my-sub(); 出力は次のとおりです。 AdHoc Exception handled …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.