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

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

5
NUnit Assert.ThrowsメソッドまたはExpectedException属性を使用しますか?
これらが例外をテストする2つの主な方法であると思われることを発見しました。 Assert.Throws<Exception>(()=>MethodThatThrows()); [ExpectedException(typeof(Exception))] これらのうちどれが最良でしょうか?一方が他方よりも優れている点はありますか?それとも単に個人的な好みの問題ですか?

9
Pythonの「内部例外」(トレースバックあり)?
私のバックグラウンドはC#で、最近Pythonでプログラミングを始めました。例外がスローされたときは、通常、完全なスタックトレースを表示しながら、さらに情報を追加する別の例外にラップします。C#では非常に簡単ですが、Pythonではどうすればよいですか? 例えば。C#では、次のようにします。 try { ProcessFile(filePath); } catch (Exception ex) { throw new ApplicationException("Failed to process file " + filePath, ex); } Pythonでも同様のことができます。 try: ProcessFile(filePath) except Exception as e: raise Exception('Failed to process file ' + filePath, e) ...しかし、これは内部例外のトレースバックを失います! 編集:両方の例外メッセージと両方のスタックトレースを確認し、2つを関連付けます。つまり、C#の場合と同様に、ここで例外Xが発生し、次に例外Yが発生したことを出力で確認したいと思います。これはPython 2.6で可能ですか?(Glenn Maynardの答えに基づく)私がこれまでにできる最善のように見えます: try: ProcessFile(filePath) except Exception as e: raise Exception('Failed to …

12
Pythonでカスタムメッセージを使用して同じ例外を発生させるにはどうすればよいですか?
try私のコードにこのブロックがあります: try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise ValueError(errmsg) 厳密に言えば、私は実際には、スローされたではなく、別の をレイズしています。これは、この場合と呼ばれます。カスタムメッセージを添付するにはどうすればよいですか。私は、次のコードを試してみたが起因して失敗した、例えば、呼び出し可能なものではありません。ValueErrorValueErrordo_something...()errerrerrValueError try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise err(errmsg)

13
.NET例外はどのくらい遅いですか?
例外をスローするタイミングとスローしないタイミングについての議論はしたくありません。簡単な問題を解決したいと思います。例外をスローしないという主張は99%の確率でスローされますが、反対側は(ベンチマークテストを使用して)速度は問題ではないと主張します。私は、どちらか一方に関係する多数のブログ、記事、および投稿を読みました。どっち? 答えからのいくつかのリンク:スキート、マリアーニ、Brumme。

9
例外に情報を追加しますか?
私はこのようなことを達成したいです: def foo(): try: raise IOError('Stuff ') except: raise def bar(arg1): try: foo() except Exception as e: e.message = e.message + 'happens at %s' % arg1 raise bar('arg1') Traceback... IOError('Stuff Happens at arg1') しかし、私が得るものは: Traceback.. IOError('Stuff') これを達成する方法についての手がかりはありますか?Python 2と3の両方でそれを行う方法?
142 python  exception 

28
「catch」または「finally」のスコープの「try」で変数が宣言されないのはなぜですか?
C#およびJava(およびその他の言語も)では、「try」ブロックで宣言された変数は、対応する「catch」または「finally」ブロックのスコープにはありません。たとえば、次のコードはコンパイルされません。 try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } このコードでは、sはtryブロックのスコープ内にのみ存在するため、catchブロックのsへの参照でコンパイル時エラーが発生します。(Javaでは、コンパイルエラーは「sは解決できません」です。C#では、「名前 's'は現在のコンテキストに存在しません」です。) この問題の一般的な解決策は、tryブロック内ではなく、tryブロックの直前に変数を宣言することです。 String s; try { s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } ただし、少なくとも私にとっては、(1)これは不格好なソリューションのように感じられ、(2)プログラマーが意図したよりもスコープが広い変数になります(メソッドのコンテキストのみではなく、メソッドの残り全体) try-catch-finally)。 私の質問は、この言語設計の決定の背後にある根拠は何でしたか(Java、C#、および/または他の該当する言語で)?

3
Android Studio IDE:例外で中断
私のAndroid Studioはデフォルトで例外で中断したくないようです。「すべての例外」でブレークを有効にすると、実際のJDEライブラリ内でブレークが開始されます。私のコード内の例外でのみそれを強制的に中断させる方法はありますか? Visual Studioユニバースから来て、ここでデフォルトのVSデバッグ動作を探します。

18
java.lang.IllegalStateException:onSaveInstanceStateの後でこのアクションを実行できません
アプリのサポートライブラリを使用しています。私のFragmentActivityでは、インターネットからデータをダウンロードするためにAsyncTaskを使用しています。onPreExecute()メソッドでFragmentを追加し、onPostExecute()メソッドでもう一度削除します。その間に方向が変更されると、上記の例外が発生します。詳細をご覧ください: private class onFriendAddedAsyncTask extends AsyncTask<String, Void, String> { DummyFragment dummyFragment; FragmentManager fm; FragmentTransaction ft; @Override protected void onPreExecute() { Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/onPreExecute"); dummyFragment = DummyFragment.newInstance(); fm = getSupportFragmentManager(); ft = fm.beginTransaction(); ft.add(dummyFragment, "dummy_fragment"); ft.commit(); } @Override protected void onPostExecute(String result) { Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/onPostExecute"); ft = fm.beginTransaction(); ft.remove(dummyFragment); ft.commit(); } @Override …


8
ConcurrentModificationExceptionがスローされる理由とそのデバッグ方法
私はCollection(HashMapJPAによって間接的に使用されているため、そうなります)を使用していますが、明らかにランダムにコードがをスローしConcurrentModificationExceptionます。何が原因で、この問題を解決するにはどうすればよいですか?同期を使用することで、おそらく? ここに完全なスタックトレースがあります: Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$ValueIterator.next(Unknown Source) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130)

12
IllegalMonitorStateExceptionなしでJavaで待機と通知を使用する方法
2つの行列があり、それらを乗算して、各セルの結果を出力する必要があります。1つのセルの準備ができたらすぐに印刷する必要がありますが、たとえば[2] [0]の結果が最初に準備できたとしても、セル[2] [0]の前に[0] [0]セルを印刷する必要があります。ですから、注文順に印刷する必要があります。したがって、私の考えはmultiplyThread、正しいセルを印刷する準備ができたことをが通知するまでプリンタスレッドを待機させ、次にprinterThreadがセルを印刷して待機に戻る、などです。 だから私は乗算を行うこのスレッドを持っています: public void run() { int countNumOfActions = 0; // How many multiplications have we done int maxActions = randomize(); // Maximum number of actions allowed for (int i = 0; i < size; i++) { result[rowNum][colNum] = result[rowNum][colNum] + row[i] * col[i]; countNumOfActions++; // Reached …



10
exception.printStackTrace()が悪い習慣と見なされるのはなぜですか?
あり、多くの材料うちそこ例外のスタックトレースを印刷することは悪い習慣であることを示唆しています。 たとえば、CheckstyleのRegexpSinglelineチェックから: このチェックを使用して、ex.printStacktrace()の呼び出しなどの一般的な悪い習慣を見つけることができます。 ただし、スタックトレースが例外の原因を追跡するのに非常に役立つので、正当な理由が得られる場所を見つけるのに苦労しています。私が知っていること: スタックトレースがエンドユーザーに表示されないようにする必要があります(ユーザーエクスペリエンスとセキュリティ上の理由から) スタックトレースの生成は比較的コストのかかるプロセスです(ほとんどの「例外的な」状況では問題になる可能性は低いですが)。 多くのロギングフレームワークは、スタックトレースを出力します(私たちにはできませんし、できません。簡単に変更することはできません)。 スタックトレースを出力しても、エラー処理にはなりません。他の情報ロギングや例外処理と組み合わせる必要があります。 コードでスタックトレースの出力を回避する他の理由は何ですか?

2
UnhandledExceptionEventArgs.ExceptionObjectが例外ではなくオブジェクトであるのはなぜですか?
なぜUnhandledExceptionEventArgs.ExceptionObjectオブジェクトであり、ではないのExceptionですか? につけていAppDomain.UnhandledExceptionます。 にキャストUnhandledExceptionEventArgs.ExceptionObjectしてException質問します。 そしてこれを念頭に置いて、それはヌルになるでしょうか? MSDNのドキュメントは exatly有用ではありません。 未処理の例外オブジェクトを取得します。

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