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

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

5
1行で複数の例外をキャッチ(ブロックを除く)
私ができることを知っています: try: # do something that may fail except: # do this if ANYTHING goes wrong 私もこれを行うことができます: try: # do something that may fail except IDontLikeYouException: # say please except YouAreTooShortException: # stand on a ladder しかし、私が2つの異なる例外の中で同じことをしたい場合、私が今考えることができる最善はこれを行うことです: try: # do something that may fail except IDontLikeYouException: # say please except …

28
一度に複数の例外をキャッチしますか?
単に捕まえるのはお勧めしませんSystem.Exception。代わりに、「既知の」例外のみをキャッチする必要があります。 さて、これは時々不必要な反復的なコードにつながる、例えば: try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } 私は疑問に思います:両方の例外をキャッチし、WebId = Guid.Empty呼び出しを1回だけ呼び出す方法はありますか? 与えられた例はだけなので、かなり単純GUIDです。しかし、オブジェクトを複数回変更するコードを想像してください。操作の1つが予期した方法で失敗した場合は、を「リセット」する必要がありobjectます。ただし、予期しない例外が発生した場合でも、さらに高く設定したいと思います。


13
プログラムを停止せずに完全なトレースバックを印刷する方法は?
10個のWebサイトを解析し、データファイルを特定し、ファイルを保存し、解析して、NumPyライブラリですぐに使用できるデータを作成するプログラムを作成しています。ありますトン、このファイルの出会い私は分類するために、まだまし悪いリンク、不完全に形成されXML、行方不明のエントリ、および他のものによるエラーのは。私は最初にこのようなエラーを処理するためにこのプログラムを作りました: try: do_stuff() except: pass しかし今、私はエラーをログに記録したいと思います: try: do_stuff() except Exception, err: print Exception, err これは、後で確認するためにログファイルに出力していることに注意してください。これは通常、非常に役に立たないデータを印刷します。私が欲しいのは、try-exceptが例外をインターセプトせずにエラーがトリガーされたときに出力されるのとまったく同じ行を出力することですが、プログラムが一連のforループにネストされているため、プログラムを停止させたくありません完了するまで参照してください。


10
Node.jsのベストプラクティスの例外処理
数日前にnode.jsを試してみたところです。プログラムに未処理の例外があると、ノードが終了することに気づきました。これは、未処理の例外が発生したときにワーカースレッドのみが終了し、コンテナーがまだ要求を受信できる場合に遭遇した通常のサーバーコンテナーとは異なります。これはいくつかの質問を引き起こします: process.on('uncaughtException')それを防ぐ唯一の効果的な方法はありますか? ウィルprocess.on('uncaughtException')だけでなく、非同期プロセスの実行中に未処理の例外をキャッチ? キャッチされていない例外の場合に活用できる、すでに構築されているモジュール(電子メールの送信やファイルへの書き込みなど)はありますか? node.jsでキャッチされなかった例外を処理するための一般的なベストプラクティスを教えてくれるポインタ/記事に感謝します


17
キャッチできないChuckNorrisException
仮説をキャッチできないようにするJavaのコードのスニペットを構築することは可能java.lang.ChuckNorrisExceptionですか? 頭に浮かんだ考えは、たとえばインターセプターやアスペクト指向プログラミングを使用しています。


17
C#で例外をキャッチして再スローする理由
記事C#-シリアル化可能なDTO上のデータ転送オブジェクトを見ています。 記事には次のコードが含まれています。 public static string SerializeDTO(DTO dto) { try { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = new StringWriter(); xmlSer.Serialize(sWriter, dto); return sWriter.ToString(); } catch(Exception ex) { throw ex; } } 記事の残りの部分は正気で妥当なように見えますが(noobにとって)、そのtry-catch-throwはWtfExceptionをスローします... これは、例外をまったく処理しないこととまったく同じではありませんか? エルゴ: public static string SerializeDTO(DTO dto) { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = new …

7
Rubyで始めて、救って、確認しますか?
最近Rubyでプログラミングを始めて、例外処理を検討しています。 ensureRuby finallyがC#に相当するのかどうか疑問に思っていましたか?私が持っているべきです: file = File.open("myFile.txt", "w") begin file << "#{content} \n" rescue #handle the error here ensure file.close unless file.nil? end または私はこれを行うべきですか? #store the file file = File.open("myFile.txt", "w") begin file << "#{content} \n" file.close rescue #handle the error here ensure file.close unless file.nil? end DOESは、ensure例外が発生していない場合でも、何に関係なく呼び出されますか?

8
noexceptを実際に使用する必要があるのはいつですか?
noexceptキーワードが適切に多くの関数のシグネチャに適用することができますが、私は実際にそれを使用することを検討すべきときになどわからないと思います。これまでに読んだ内容に基づくと、のぎりぎりの追加はnoexcept、ムーブコンストラクターがスローするときに発生するいくつかの重要な問題に対処しているようです。ただし、noexceptそもそも詳細について読むためのいくつかの実際的な質問に対しては、まだ満足のいく答えを提供することはできません。 私がスローしないとわかっている関数の例はたくさんありますが、コンパイラーがそれ自体で決定することはできません。このような場合noexceptはすべて関数宣言に追加する必要がありますか? すべての関数宣言のnoexcept後に追加する必要があるかどうかを考える必要があると、プログラマーの生産性が大幅に低下します(率直に言って、お尻の痛みになります)。どのような状況での使用についてより注意する必要がありますか。また、どのような状況で暗黙の状況を回避できますか?noexceptnoexcept(false) 使用後にパフォーマンスの改善が見られるのはいつ現実的に期待できnoexceptますか?特に、C ++コンパイラーがを追加した後でより優れたマシンコードを生成できるコードの例を示しますnoexcept。 個人的には、noexcept特定の種類の最適化を安全に適用するためにコンパイラーに提供される自由の増加のために気にしています。最近のコンパイラnoexceptはこのように利用していますか?そうでない場合、近いうちにそうすることを期待できますか?

11
デバッグ情報を含むPythonエラーをログに記録するにはどうすればよいですか?
私はPythonの例外メッセージをログファイルに出力していますlogging.error: import logging try: 1/0 except ZeroDivisionError as e: logging.error(e) # ERROR:root:division by zero 例外文字列だけではなく、例外とそれを生成したコードに関する詳細な情報を出力することはできますか?行番号やスタックトレースなどがいいでしょう。


10
Pythonでtry-except-elseを使用することは良い習慣ですか?
Pythonでは時々、次のようなブロックが表示されます。 try: try_this(whatever) except SomeException as exception: #Handle exception else: return something try-except-elseが存在する理由は何ですか? フロー制御を実行するために例外を使用しているので、そのようなプログラミングは好きではありません。でも、もしそれが言語に含まれているなら、それには正当な理由があるに違いないですね。 例外はエラーではなく、例外的な状況でのみ使用する必要があることを理解しています(例:ファイルをディスクに書き込もうとして、空き領域がない、または権限がない可能性があります)。フローではないコントロール。 通常、私は例外を次のように処理します: something = some_default_value try: something = try_this(whatever) except SomeException as exception: #Handle exception finally: return something または、例外が発生しても何も返さない場合は、次のようにします。 try: something = try_this(whatever) return something except SomeException as exception: #Handle exception

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