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

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


8
Debug.Assertと例外のスロー
私は、アサーションの使用方法と使用時期に関する多くの記事(およびStackOverflowに投稿された他のいくつかの同様の質問)を読みましたが、それらをよく理解しています。しかし、それでも、Debug.Assert単純な例外をスローする代わりに、どのような動機で私を駆り立てるのか理解できません。つまり、.NETでは、失敗したアサーションに対するデフォルトの応答は、「世界を停止」してユーザーにメッセージボックスを表示することです。この種の動作は変更できる可能性がありますが、それを行うのは非常に煩わしく冗長であると思いますが、代わりに適切な例外をスローすることもできます。このようにして、例外をスローする直前にアプリケーションのログにエラーを簡単に書き込むことができ、さらに、アプリケーションが必ずしもフリーズするわけではありません。 それで、もしあるとすればDebug.Assert、明白な例外の代わりに使用する必要があるのはなぜですか?アサーションを本来あるべきではない場所に配置すると、あらゆる種類の「望ましくない動作」が発生する可能性があるため、私の見解では、例外をスローする代わりにアサーションを使用しても何も得られません。私に同意しますか、それともここで何か不足していますか? 注:「理論上」の違いは何なのか(デバッグとリリース、使用パターンなど)は完全に理解していますが、それを見ると、アサートを実行するのではなく、例外をスローした方がよいでしょう。プロダクションリリースでバグが発見された場合でも、「アサーション」を失敗させたいので(結局のところ、「オーバーヘッド」は途方もなく小さいので)、代わりに例外をスローした方がよいでしょう。 編集:私がそれを見る方法、アサートが失敗した場合、それはアプリケーションが何らかの破損した予期しない状態に入ったことを意味します。では、なぜ実行を続けたいのでしょうか?アプリケーションがデバッグバージョンとリリースバージョンのどちらで実行されているかは関係ありません。同じことが両方に行きます

2
Double.parseDouble(null)とInteger.parseInt(null)が異なる例外をスローするのはなぜですか?
Double.parseDouble(null)とInteger.parseInt(null)が異なる例外をスローするのはなぜですか? これは歴史的な事故ですか、それとも意図的な事故ですか?ドキュメントは明確のために、例外の2種類を述べてDouble.parseDouble(...)とのための1つをInteger.parseInt()、それは矛盾しているようです。 Integer.parseInt(null); // throws java.lang.NumberFormatException: null しかしながら Double.parseDouble(null); // throws java.lang.NullPointerException

13
断続的なasp.net mvc例外:「パブリックアクションメソッドABCがコントローラーXYZで見つかりませんでした。」
asp.net mvcがアクションメソッドを見つけられないという断続的な例外が発生します。ここに例外があります: パブリックアクションメソッド 'Fill'がコントローラー 'Schoon.Form.Web.Controllers.ChrisController'で見つかりませんでした。 このアプリケーションはほとんどの場合機能するため、ルーティングは正しく設定されていると思います。コントローラのアクションメソッドは次のとおりです。 [ActionName("Fill")] [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter] public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode) { //… } ルート: routes.MapRoute( "SchoonForm", "Form/Fill/{subscriberId}", new { controller = "ChrisController", action = "Fill" }, new { subscriberId = @"\d+" } ); そしてここにスタックがあります: System.Web.HttpException:パブリックアクションメソッド 'Fill'がコントローラー 'Schoon.Form.Web.Controllers.ChrisController'で見つかりませんでした。C:\ dev \ ThirdParty …

24
例外コードとリターンコードのどちらが好きですか。また、その理由は何ですか。
私の質問は、ほとんどの開発者がエラー処理、例外、またはエラーリターンコードに対して何を好むかということです。言語(または言語族)固有であり、なぜ一方を他方よりも好むのかを教えてください。 私は好奇心からこれを求めています。個人的には、エラーリターンコードの方が爆発性が低く、必要がない場合にユーザーコードに例外パフォーマンスペナルティを支払うように強制しないため、私はエラーリターンコードを好みます。 更新:すべての回答に感謝します!私は例外を除いてコードフローの予測不可能性が嫌いですが、言わなければなりません。リターンコード(およびその兄のハンドル)に関する答えは、コードに多くのノイズを追加します。

3
他のRails例外と同様に動作するように、Railsで例外を発生させるにはどうすればよいですか?
例外を発生させて、通常のRails例外と同じことを行いたいと思います。特に、開発モードで例外とスタックトレースを表示し、プロダクションモードで「申し訳ありませんが、問題が発生しました」ページを表示します。 私は以下を試しました: raise "safety_care group missing!" if group.nil? しかし、それは単に"ERROR signing up, group missing!"development.logファイルに書き込みます

12
これの原因「Base-64 char配列の無効な長さ」
ここで続けることはほとんどありません。これをローカルで再現することはできませんが、ユーザーがエラーを受け取ると、自動メール例外通知が表示されます。 Invalid length for a Base-64 char array. at System.Convert.FromBase64String(String s) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) at System.Web.UI.HiddenFieldPageStatePersister.Load() ビューステートに割り当てられているデータに問題があると思う傾向があります。 例えば: List<int> SelectedActionIDList = GetSelectedActionIDList(); ViewState["_SelectedActionIDList"] = SelectedActionIDList; エラーをローカルで再現することができなければ、エラーの原因を推測することは困難です。 誰かがこのエラーの経験を持っている場合、私はあなたが何を見つけたかを本当に知りたいです。

5
JavaScript例外スタックトレース
Firefoxでは、を使用して例外のスタックトレースを取得できますexception.stack。 他のブラウザでもそれを取得する方法はありますか? 編集:実際にはスタックトレースを自動的に保存し(可能な場合)、その時点ではデバッグしないでください(つまり、デバッガーでスタックトレースを取得する方法を知っています)。


15
android.content.res.Resources $ NotFoundExceptionの取得:リソースがandroidに存在する場合でも例外
エラーが発生する原因を教えてください。 ランドスケープモードのみのアクティビティの1つを持つアプリを作成しています。そこで、AndroidManifest.xmlファイルに以下を追加しました <activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity> 私は次のようなフォルダを作成しました / res / layout-land その中にsee_today_landscape_layoutというレイアウトを追加します。 そしてonCreate()私は以下を追加しました protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.see_today_landscape_layout); .... } しかし、アプリを実行すると、次のエラーが発生します 02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main 02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b 02-06 13:46:14.358: E/AndroidRuntime(13286): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787) 02-06 13:46:14.358: E/AndroidRuntime(13286): at …

7
Python:メソッド呼び出しからスローされる可能性のある例外を知るにはどうすればよいですか?
Pythonコードを実行するときにどの例外が予想されるかを(コーディング時に)知る方法はありますか?どの例外タイプがスローされるかわからないため(そしてドキュメントを読むように言わないので、90%の確率で基本のExceptionクラスをキャッチすることになります。多くの場合、例外は深いところから伝播される可能性があります。ドキュメントが更新または修正されていない場合)。これをチェックするためのツールはありますか?(Pythonコードとライブラリを読むなど)?
89 python  exception 

6
MSTestユニットテストで「例外が発生しなかった」ことを確認するにはどうすればよいですか?
「void」を返すこの1つのメソッドの単体テストを書いています。例外が発生しない場合にテストに合格するケースを1つ挙げたいと思います。C#でそれを書くにはどうすればよいですか? Assert.IsTrue(????) (私の推測では、これは私がチェックする方法ですが、「???」には何が入りますか) 私の質問が十分に明確であることを願っています。

8
そうでない場合、誰がJavaスレッドのinterrupt()メソッドを呼び出していますか?
Java Concurrency in Practiceを読んだり、読み直したり、このテーマに関するいくつかのスレッドを読んだり、IBMの記事「InterruptedExceptionに対処する」を読んだりしましたが、理解できないことがあり、壊れている可能性があります。 2つの質問に分けてください: 自分で他のスレッドを中断したことがない場合、InterruptedExceptionをトリガーできるのは何ですか? 自分でinterrupt()を使用して他のスレッドを中断したことがない場合(たとえば、ポイズンピルやwhile(!cancelled)スタイルループ[両方ともJCIPで説明されている]など、作業中のスレッドをキャンセルするために他の手段を使用しているため)、それでは、InterruptedExceptionはどういう意味ですか?捕まえたらどうすればいいの?アプリをシャットダウンしますか?

6
ロックされたオブジェクトは、その内部で例外が発生した場合、ロックされたままになりますか?
ac#スレッドアプリで、オブジェクトをロックする場合、キューとしましょう。例外が発生した場合、オブジェクトはロックされたままになりますか?疑似コードは次のとおりです。 int ii; lock(MyQueue) { MyClass LclClass = (MyClass)MyQueue.Dequeue(); try { ii = int.parse(LclClass.SomeString); } catch { MessageBox.Show("Error parsing string"); } } 私が理解しているように、catchの後のコードは実行されませんが、ロックが解放されるかどうか疑問に思っていました。


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