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

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

16
サービスにアプリケーション(インフラストラクチャー以外)のエンドポイントがありません
最近、WCFサービス(dll)とサービスホスト(exe)を作成しました。WcfTestClientにサービスを正常に追加できるので、WCFサービスが正しく機能していることがわかります。 しかし、サービスホスト(exe)からWCFを利用しようとすると、問題が発生しているようです。WCF(dll)への参照をサービスホスト(exe)に追加し、exeに必要なコンポーネントを作成できます。サービスインストーラー、サービスホスト、app.configなどをコンパイルし、InstallUtilを使用してexeを最後にインストールします。しかし、Microsoft管理コンソールでサービスを開始しようとすると、サービスは開始後すぐに停止します。 そのため、この問題の正確な原因を調査し始め、イベントビューアのアプリケーションログからこのエラーが発生しました。 説明: サービスを開始できません。System.InvalidOperationException:サービス 'Service'には、アプリケーション(インフラストラクチャでない)エンドポイントがありません。これは、アプリケーションの構成ファイルが見つからなかったか、構成ファイルでサービス名と一致するサービス要素が見つからなかったか、サービス要素でエンドポイントが定義されていなかったことが原因である可能性があります。 このエラーは実際にはで生成されOnStartます。この呼び出しを実行すると、私のexeのServiceHost.Open()。他の個人がこの問題に遭遇した多数の投稿を見てきましたが、それらのすべてではないにしても、ほとんどがサービス名または契約を主張しています。名前空間とクラス名は指定されていません。私は私の設定ファイルでこれら両方のエントリをチェックしました。exeとdllで、それらは完全に一致します。私は他の人たちを後ろでダブルチェックして、私が一時的に失明していないことを確認しましたが、もちろん彼らはすべてが正しく指定されているように見えたという私と同じ結論に達しました。この時点で何が起こっているのか、私は本当に途方に暮れています。誰かがこの問題を手伝ってくれませんか? これが発生する可能性のある理由として考えられるもう1つのことは、app.configが読み込まれないことです。少なくとも私が読むべきだと思うものではありません。これは問題でしょうか?もしそうなら、どうすればこの問題に対処できますか?再度、どんな助けもいただければ幸いです。




6
Pythonでアサーションを無効にする
Наэтотвопросестьответынаスタックオーバーフローнарусском:Естьливозможностьотключитьアサート? Pythonでアサーションを無効にするにはどうすればよいですか? つまり、アサーションが失敗した場合、アサーションがスローするのAssertionErrorではなく、続行する必要があります。 それ、どうやったら出来るの?

4
「ログアンドスロー」がアンチパターンと見なされるのはなぜですか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 7年前に閉鎖されました。 この質問を改善する この質問は、周りの議論によって引き起こされました 、私が良い答えを受け取らなかったこの記事。 他の方法で処理できない場合、例外をログに記録してから再スローする(もちろん元のスタックトレースを保持する)のはなぜ悪い考えですか?

24
Integer.parseInt()をカプセル化する良い方法
Integer.parseInt()Stringをintに変換するためによく使用するプロジェクトがあります。何かがうまくいかない場合(たとえば、はString数字ではなく文字a、など)、このメソッドは例外をスローします。ただし、コード内のどこでも例外を処理する必要がある場合、これは非常に醜く非常にすぐに見え始めます。これをメソッドに入れたいのですが、変換が失敗したことを示すためにクリーンな値を返す方法がわかりません。 C ++では、intへのポインターを受け入れるメソッドを作成し、メソッド自体にtrueまたはfalseを返させることができます。ただし、私の知る限り、これはJavaでは不可能です。true / false変数と変換された値を含むオブジェクトを作成することもできますが、これも理想的ではないようです。同じことがグローバルな値にも当てはまり、マルチスレッドで問題が発生する可能性があります。 これを行うクリーンな方法はありますか?

5
Androidでグローバルなキャッチされない例外ハンドラーを設定する理想的な方法
Androidアプリケーションのすべてのスレッドにグローバルなキャッチされない例外ハンドラーを設定したいと思います。そのため、私のApplicationサブクラスでは、Thread.UncaughtExceptionHandlerキャッチされない例外のデフォルトハンドラーとしての実装を設定しました。 Thread.setDefaultUncaughtExceptionHandler( new DefaultExceptionHandler(this)); 私の実装では、AlertDialog適切な例外メッセージを表示しようとしています。 ただし、これは機能していないようです。処理されないスレッドに対して例外がスローされるたびに、標準のOSデフォルトダイアログ(「申し訳ありません!-アプリケーションが停止しました-予期せずダイアログ」)が表示されます。 キャッチされない例外のデフォルトハンドラーを設定するための正しく理想的な方法は何ですか?

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

22
これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります
ローカルマシンでWCFサービスが正常に実行されています。サーバーに配置しましたが、次のエラーが発生します。 http://xx.xx.x.xx:8200 / Services / WCFClient.svcへのHTTP応答の受信中にエラーが発生し ました。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、HTTPリクエストコンテキストがサーバーによって中止されたことが原因である可能性もあります(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。] URLのサービスにアクセスしましたが、正常に機能しています。この関数に対して行っているのは、画像名に文字列を返すことだけなので、渡されるデータはそれほど多くありません。ログをトレースしましたが、同じ情報が得られます。これが私のクライアント設定です: <binding name="basicHttpBinding_IWCFClient" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> <endpoint name="basicHttpBinding_IWCFClient" address="http://localhost:4295/Services/WCFClient.svc" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IWCFClient" behaviorConfiguration="WCFGraphicManagementTool.Services.ClientBehavior" contract="WCFClient.IWCFClient" /> …

5
関数で例外を発生させるか、なしを返すか?
Pythonのユーザー定義関数のより良い方法は何ですか:raise例外またはreturn None?たとえば、フォルダ内の最新のファイルを検索する関数があります。 def latestpdf(folder): # list the files and sort them try: latest = files[-1] except IndexError: # Folder is empty. return None # One possibility raise FileNotFoundError() # Alternative else: return somefunc(latest) # In my case, somefunc parses the filename 別のオプションは、例外を残して呼び出し元のコードで処理することですが、FileNotFoundErrorよりもを処理する方が明確だと思いIndexErrorます。それとも、別の名前で例外を再発生させるのは悪い形式ですか?

7
RuntimeExceptionをスローするメソッドは、メソッドシグネチャでそれを示す必要がありますか?
たとえば、frameworks / JDKの多くのメソッドがスローする可能性があります java.lang.SecurityException ただし、これはメソッドシグネチャには示されていません(これは通常、チェックされた例外のために予約されているためです)。メソッドsigsでRuntimeExceptionsを宣言することには、多くの利点があることを主張したいと思います(たとえば、静的型チェックに似ています)。私は酔っていますか、それともそうではありませんか?

8
C#で「nullをスロー」できるのはなぜですか?
特に複雑な例外処理コードを書いているときに、誰かが尋ねました。例外オブジェクトがnullでないことを確認する必要はありませんか?もちろんそうではないと言いましたが、試してみることにしました。どうやら、nullをスローすることはできますが、それでもどこかで例外になります。 なぜこれが許可されるのですか? throw null; このスニペットでは、ありがたいことに「ex」はnullではありませんが、nullになる可能性はありますか? try { throw null; } catch (Exception ex) { //can ex ever be null? //thankfully, it isn't null, but is //ex is System.NullReferenceException }

10
最大回数まで何かを試すためのPythonの方法はありますか?[複製]
この質問にはすでにここに答えがあります: Python:すべてが失敗するまで関数を3回試してください (3つの回答) 4か月前に閉鎖されました。 共有Linuxホスト上のMySQLサーバーにクエリを実行するPythonスクリプトがあります。何らかの理由で、MySQLへのクエリはしばしば「サーバーがなくなった」エラーを返します。 _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away') 直後にクエリを再試行すると、通常は成功します。だから、私はPythonでクエリを実行しようとする賢明な方法があるかどうかを知りたいのですが、失敗した場合は、固定回数まで再試行します。たぶん、完全に諦める前に5回試してみたいと思います。 これが私が持っている種類のコードです: conn = MySQLdb.connect(host, user, password, database) cursor = conn.cursor() try: cursor.execute(query) rows = cursor.fetchall() for row in rows: # do something with the data except MySQLdb.Error, e: print "MySQL Error %d: %s" % (e.args[0], e.args[1]) 明らかに、except節で別の試みをすることでそれを行うことができましたが、それは信じられないほど醜いものであり、これを達成するための適切な方法があるに違いないと感じています。


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