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

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

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例外が発生していない場合でも、何に関係なく呼び出されますか?

7
Pythonの不正な引数と不正な引数の組み合わせについて、どの例外を発生させる必要がありますか?
Pythonで無効な引数の組み合わせを示すためのベストプラクティスについて疑問に思っていました。私はあなたがそのような機能を持っているいくつかの状況に遭遇しました: def import_to_orm(name, save=False, recurse=False): """ :param name: Name of some external entity to import. :param save: Save the ORM object before returning. :param recurse: Attempt to import associated objects as well. Because you need the original object to have a key to relate to, save must be `True` for …


11
Python例外メッセージのキャプチャ
import ftplib import urllib2 import os import logging logger = logging.getLogger('ftpuploader') hdlr = logging.FileHandler('ftplog.log') formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) logger.addHandler(hdlr) logger.setLevel(logging.INFO) FTPADDR = "some ftp address" def upload_to_ftp(con, filepath): try: f = open(filepath,'rb') # file to send con.storbinary('STOR '+ filepath, f) # Send the file f.close() # Close file …

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

30
取得メソッドは、戻り値を生成できないときに「null」を返すか、例外をスローする必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 見つかった場合にオブジェクトを返すことになっているメソッドがあります。 それが見つからない場合、私は以下を行う必要があります: nullを返す 例外を投げる その他の

18
Javaのパフォーマンスに対する例外の影響は何ですか?
質問:Javaでの例外処理は実際には遅いですか? 従来の知識と多くのGoogleの結果は、Javaの通常のプログラムフローに例外的なロジックを使用するべきではないと述べています。通常、2つの理由が挙げられます。 それは本当に遅いです-通常のコードよりも桁違いに遅いです(与えられた理由は異なります)、 そして 例外的なコードで処理されるのはエラーのみであることを人々が期待するので、それは厄介です。 この質問は#1についてです。 例として、このページではJava例外処理を「非常に遅い」と説明し、スローを例外メッセージ文字列の作成に関連付けます-「この文字列は、スローされる例外オブジェクトの作成に使用されます。これは高速ではありません。」記事Javaでの効果的な例外処理は、「これの理由は、例外処理のオブジェクト作成の側面が原因であり、それによって例外のスローが本質的に遅くなります」と述べています。もう1つの理由は、スタックトレースの生成が遅くなることです。 私のテスト(32ビットLinuxでJava 1.6.0_07、Java HotSpot 10.0を使用)は、例外処理が通常のコードより遅くないことを示しています。コードを実行するループでメソッドを実行してみました。メソッドの最後で、ブール値を使用してreturnまたはthrowのどちらを示すかを示します。このように、実際の処理は同じです。メソッドをさまざまな順序で実行し、テスト時間を平均化してみました。JVMがウォームアップしているのではないかと思いました。私のすべてのテストで、スローは少なくともリターンと同じくらい高速でしたが、高速ではなかった(最大3.1%高速でした)。私のテストが間違っている可能性は完全に受け入れられていますが、コードのサンプル、テストの比較、またはJavaでの例外処理が実際にあることを示す過去1〜2年の結果には、何も見たことがありません。スロー。 この道をたどるのは、通常の制御ロジックの一部として例外をスローするために使用する必要があるAPIでした。使い方を修正したかったのですが、今はできないかもしれません。代わりに私は彼らの前向きな考え方で彼らを賞賛しなければなりませんか? 論文「ジャストインタイムコンパイルでの効率的なJava例外処理」では、例外ハンドラーが存在するだけで、例外がスローされない場合でも、JITコンパイラーがコードを適切に最適化して速度を低下させるのを防ぐのに十分であると著者らは述べています。 。この理論はまだテストしていません。

16
リストから要素を削除しようとするとUnsupportedOperationExceptionが発生するのはなぜですか?
私はこのコードを持っています: public static String SelectRandomFromTemplate(String template,int count) { String[] split = template.split("|"); List<String> list=Arrays.asList(split); Random r = new Random(); while( list.size() > count ) { list.remove(r.nextInt(list.size())); } return StringUtils.join(list, ", "); } 私はこれを手に入れます: 06-03 15:05:29.614: ERROR/AndroidRuntime(7737): java.lang.UnsupportedOperationException 06-03 15:05:29.614: ERROR/AndroidRuntime(7737): at java.util.AbstractList.remove(AbstractList.java:645) これはどのように正しい方法でしょうか?Java.15

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

30
チェックされた例外に対するケース
何年もの間、私は次の質問に対して適切な答えを得ることができませんでした:一部の開発者はなぜチェックされた例外に反対するのですか?私は数多くの会話をしたり、ブログで物事を読んだり、ブルース・エッケルが言わなければならなかったことを読んだりしました(私が最初に見た人が彼らに反対して声を上げました)。 私は現在、いくつかの新しいコードを書いており、例外の処理方法に細心の注意を払っています。「チェックされた例外は好きではない」群衆の視点を確認しようとしていますが、それでも確認できません。 私が行ったすべての会話は、同じ質問に答えられずに終わります...設定させてください: 一般的に(Javaの設計方法から)、 Error 決して捕まってはならないもののためのものです(VMにはピーナッツアレルギーがあり、誰かがピーナッツの瓶を落としました) RuntimeException プログラマーが間違ったことに使用されます(プログラマーが配列の最後を離れてウォークしました) Exception(を除くRuntimeException)は、プログラマーの制御が及ばないもののためのものです(ファイルシステムへの書き込み中にディスクがいっぱいになり、プロセスのファイルハンドルの制限に達したため、これ以上ファイルを開くことができません) Throwable 単にすべての例外タイプの親です。 私がよく耳にする議論は、例外が発生した場合、開発者はすべてプログラムを終了することです。 私がよく耳にするもう1つの主張は、チェックされた例外はコードのリファクタリングを難しくするというものです。 「私がやろうとしていることはすべて終了する」という議論の場合、終了する場合でも、適切なエラーメッセージを表示する必要があるということです。エラーの処理に注意を払っているだけの場合、プログラムが終了したときにユーザーは、理由を明確に示さずに過度に満足することはありません。 「リファクタリングが難しくなる」群衆にとって、それは適切な抽象化レベルが選択されなかったことを示しています。宣言はメソッドが投げるのではなくIOException、IOExceptionより多くの何が起こっているに適している例外に変換する必要があります。 Mainのラップに問題はありませんcatch(Exception)(または、場合によってcatch(Throwable)は、プログラムが正常に終了できるようにするために-しかし、常に必要な特定の例外をキャッチします。これにより、少なくとも適切な表示を行うことができますエラーメッセージ。 人々が決して答えない質問はこれです: RuntimeException サブクラスではなくサブクラスをスローする場合、Exception 何をキャッチすることになっているのかをどのようにして知るのですか? 答えがcatchの場合は、Exceptionシステム例外と同じ方法でプログラマエラーも処理しています。それは私には間違っているようです。 キャッチThrowableすると、システム例外とVMエラー(など)を同じように処理していることになります。それは私には間違っているようです。 答えが、スローされていることがわかっている例外だけをキャッチすることである場合、どのような例外がスローされているかをどのようにして知るのですか?プログラマXが新しい例外をスローし、それをキャッチするのを忘れた場合はどうなりますか?それは私にとって非常に危険なようです。 スタックトレースを表示するプログラムは間違っていると思います。チェックされた例外を好まない人はそのように感じませんか? それで、チェックされた例外が気に入らない場合は、なぜそうしないのかを説明し、答えられない質問に答えてください。 編集:私はどちらのモデルをいつ使用するかについてのアドバイスを探していません、私が探しているのは、人々がそこRuntimeExceptionから拡張するのが好きではないために拡張する理由、Exceptionおよび/または例外をキャッチしてからスローをRuntimeException追加するのではなく、再スローする理由です彼らの方法。チェック例外を嫌う動機を理解したい。

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

10
「throw」と「throw ex」に違いはありますか?
これらの2つの違いはすでに何であるかを尋ねるいくつかの投稿があります。(なぜ私はこれについても言及しなければならないのですか...) しかし、私の質問は、別のエラーの神のような処理方法で「throw ex」と呼んでいる点で異なります。 public class Program { public static void Main(string[] args) { try { // something } catch (Exception ex) { HandleException(ex); } } private static void HandleException(Exception ex) { if (ex is ThreadAbortException) { // ignore then, return; } if (ex is ArgumentOutOfRangeException) { // Log then, throw …

30
いつ例外をスローするのですか?
私のアプリケーションが予期しないすべての条件に対して作成された例外があります。 UserNameNotValidException、PasswordNotCorrectExceptionなど ただし、これらの条件の例外を作成するべきではないと言われました。私のUMLでは、これらはメインフローの例外です。では、なぜそれが例外ではないのですか? 例外を作成するためのガイダンスまたはベストプラクティスはありますか?

16
すべてのブロックを「try」-「catch」でラップしない方がよいのはなぜですか?
メソッドが例外をスローする可能性がある場合、意味のあるtryブロックでこの呼び出しを保護しないのは無謀だと私は常に信じてきました。 私は投稿したばかりです ' try、catchブロックをスローする可能性のある呼び出しは常にラップする必要があります。「この質問に対して、それは「著しく悪いアドバイス」であると言われました-理由を理解したいと思います。

9
アプリケーションにマニフェスト権限を追加するにはどうすればよいですか?
HttpURLConnectionAndroidでHTTPリンクにアクセスしてファイルをダウンロードしようとしていますが、次の警告が表示されLogCatます: WARN / System.err(223):java.net.SocketException:Permission denied(おそらく欠落しているインターネット許可) android.Manifest.permissionアプリケーションに追加しましたが、それでも同じ例外が発生します。

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