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

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

8
何かを「試行」して例外をキャッチするか、最初に例外を回避することが可能かどうかをテストする方が良いですか?
if何かが有効かどうかをテストする必要tryがありますか、それとも例外をキャッチするだけですか? 一方通行の方が望ましいという確固とした文書はありますか 一方向にもっとpythonicですか? たとえば、私は: if len(my_list) >= 4: x = my_list[3] else: x = 'NO_ABC' または: try: x = my_list[3] except IndexError: x = 'NO_ABC' いくつかの考え... PEP 20は言う: エラーは黙って渡ってはなりません。 明示的に沈黙させない限り。 のtry代わりにを使用すると、if警告なしにエラーが発生したと解釈されますか?もしそうなら、それをこのように使用して明示的に沈黙させ、それでそれを大丈夫にしますか? 私は、物事が一方向にしかできない状況については言及していません。例えば: try: import foo except ImportError: import baz



5
トレースバック/ sys.exc_info()値を変数に保存する方法は?
エラーの名前とトレースバックの詳細を変数に保存したい。これが私の試みです。 import sys try: try: print x except Exception, ex: raise NameError except Exception, er: print "0", sys.exc_info()[0] print "1", sys.exc_info()[1] print "2", sys.exc_info()[2] 出力: 0 <type 'exceptions.NameError'> 1 2 <traceback object at 0xbd5fc8> 望ましい出力: 0 NameError 1 2 Traceback (most recent call last): File "exception.py", line 6, in <module> …

6
「最終的に」は常にPythonで実行されますか?
Pythonで可能なtry-finallyブロックの場合、finallyブロックが常に実行されることが保証されていますか? たとえば、exceptブロック内に戻ったとしましょう: try: 1/0 except ZeroDivisionError: return finally: print("Does this code run?") または多分私は再調達しExceptionます: try: 1/0 except ZeroDivisionError: raise finally: print("What about this code?") テストはfinally、上記の例で実行されることを示していますが、私が考えていない他のシナリオがあると思います。 finallyPythonでブロックの実行が失敗する可能性のあるシナリオはありますか?

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

10
Spring Resttemplateの例外処理
以下はコードスニペットです。基本的に、エラーコードが200以外の場合に例外を伝播しようとしています。 ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version), HttpMethod.POST, entity, Object.class); if(response.getStatusCode().value()!= 200){ logger.debug("Encountered Error while Calling API"); throw new ApplicationException(); } ただし、サーバーからの500応答の場合、例外が発生します org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 本当に残りのテンプレート交換メソッドをラップする必要がありますか?コードの目的は何でしょうか?

5
Pythonでキャッチされた例外の名前を取得するにはどうすればよいですか?
Pythonで発生した例外の名前を取得するにはどうすればよいですか? 例えば、 try: foo = bar except Exception as exception: name_of_exception = ??? assert name_of_exception == 'NameError' print "Failed with exception [%s]" % name_of_exception たとえば、複数(またはすべて)の例外をキャッチしていて、その例外の名前をエラーメッセージに出力したいと考えています。


16
Windowsフォームアプリケーションでの例外処理のベストプラクティス
現在、最初のWindowsフォームアプリケーションを作成しています。C#の本を何冊か読んだので、C#が例外を処理するために必要な言語機能については比較的よく理解できました。これらはすべて非常に理論的なものですが、私がまだ得ていないのは、アプリケーションで基本的な概念を優れた例外処理モデルに変換する方法の感触です。 誰もが主題についての知恵の真珠を共有したいですか?私のような初心者が犯す一般的な間違いや、アプリケーションをより安定して堅牢にする方法で例外を処理するための一般的なアドバイスを投稿してください。 私が現在解決しようとしている主なものは次のとおりです。 いつ例外を再スローする必要がありますか? なんらかの中心的なエラー処理メカニズムを用意する必要がありますか? スローされる可能性のある例外を処理すると、ディスク上のファイルが存在するかどうかなどの事前のテストと比較して、パフォーマンスに影響がありますか? すべての実行可能コードをtry-catch-finallyブロックで囲む必要がありますか? 空のcatchブロックが受け入れられる場合がありますか? すべてのアドバイスに感謝します!

12
PHP:例外vsエラー?
多分私はそれをPHPマニュアルのどこかに欠けていますが、エラーと例外の正確な違いは何ですか?私が見ることができる唯一の違いは、エラーと例外が異なる方法で処理されることです。しかし、何が例外を引き起こし、何がエラーを引き起こしますか?



12
未処理の例外でVisual Studio 2015が機能しない
Visual Studioには、「未処理の例外でブレークする」という特定のチェックボックスがありました。2015年にこれは削除されました(または私が見つけられない場所に移動しました)。したがって、ユーザーレベルの例外ハンドラーを提供できない場合でも、変換されたプロジェクトが壊れることはなくなりました。私は特定の例外を処理するため、すべての「スローされた例外」を中断したくありません。特定のハンドラを提供できなかったところです。 現在、私のコードは単に現在のプロシージャを終了し、次の呼び出しスタックの場所で実行を続行します。GOODではありません。 誰もがこれをVisual Studio 2015に戻す方法を知っていますか?昨日、コミュニティエディションにアップグレードしました。

7
キャッチされない例外を処理してログファイルを送信する必要がある
更新:以下の「承認された」ソリューションを参照してください アプリが単に終了するのではなく、未処理の例外を作成する場合、まずユーザーにログファイルを送信する機会を与えたいと思います。ランダムな例外が発生した後にさらに作業を行うのは危険であると私は理解していますが、最悪の場合、アプリのクラッシュが終了し、ログファイルが送信されません。これは私が予想したよりもトリッキーであることが判明しています:) 機能:(1)キャッチされなかった例外をトラップし、(2)ログ情報を抽出してファイルに書き込みます。 まだ機能していないもの:(3)メールを送信するためのアクティビティを開始する。最終的に、ユーザーの許可を求める別のアクティビティがあります。メールアクティビティが正常に機能するようになれば、他のユーザーに問題が発生することはあまりありません。 問題の核心は、未処理の例外が私のApplicationクラスでキャッチされることです。これはアクティビティではないため、Intent.ACTION_SENDでアクティビティを開始する方法は明らかではありません。つまり、通常、アクティビティを開始するには、startActivityを呼び出し、onActivityResultで再開します。これらのメソッドは、アクティビティではサポートされていますが、アプリケーションではサポートされていません。 これを行う方法に関する提案はありますか? 以下は、開始ガイドとしてのコードの抜粋です。 public class MyApplication extends Application { defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler(); public void onCreate () { Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException (Thread thread, Throwable e) { handleUncaughtException (thread, e); } }); } private void handleUncaughtException (Thread thread, Throwable e) { String fullFileName …

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