タグ付けされた質問 「try-catch」

try-catchは、コードセクションによって発生した例外をキャッチするための構文構造です

9
try / catch +使用、正しい構文
どれ: using (var myObject = new MyClass()) { try { // something here... } catch(Exception ex) { // Handle exception } } または try { using (var myObject = new MyClass()) { // something here... } } catch(Exception ex) { // Handle exception }

21
キャッチする必要があります...キャッチはループの内側または外側に行きますか?
次のようなループがあります。 for (int i = 0; i < max; i++) { String myString = ...; float myNum = Float.parseFloat(myString); myFloats[i] = myNum; } これは、フロートの配列を返すことを唯一の目的とするメソッドの主要なコンテンツです。nullエラーが発生した場合にこのメソッドを返すようにしたいので、次のようにループをtry...catchブロック内に配置します。 try { for (int i = 0; i < max; i++) { String myString = ...; float myNum = Float.parseFloat(myString); myFloats[i] = myNum; } } catch …

6
キャッチされないJava例外?
私はtry-catch構文に小さな理論上の問題があります。 昨日、Javaに関する実践的な試験を受けましたが、次の例が理解できません。 try { try { System.out.print("A"); throw new Exception("1"); } catch (Exception e) { System.out.print("B"); throw new Exception("2"); } finally { System.out.print("C"); throw new Exception("3"); } } catch (Exception e) { System.out.print(e.getMessage()); } 質問は、「出力はどのように見えるか?」でした。 私はそれがAB2C3であるとかなり確信していましたが、驚きです、それは真実ではありません。 正解はABC3です(テスト済みで、実際にはそうです)。 私の質問は、Exception( "2")はどこに行ったのですか?

8
node.jsがクラッシュしないようにするにはどうすればよいですか?try-catchが機能しない
私の経験では、phpサーバーはログまたはサーバーエンドに例外をスローしますが、node.jsは単にクラッシュします。すべてのコードが非同期で行われるため、try-catchでコードを囲むこともできません。他のすべての人が本番サーバーで何をしているのか知りたいのですが。

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


6
fs.readFileSync()のファイルをキャプチャする方法は?
node.js内のreadFile()はエラーをキャプチャする方法を示していますが、エラー処理に関するreadFileSync()関数のコメントはありません。そのため、ファイルがないときにreadFileSync()を使用しようとすると、エラーが発生しますError: ENOENT, no such file or directory。 スローされている例外をキャプチャするにはどうすればよいですか?docoにはどの例外がスローされるかが記載されていないため、どの例外をキャッチする必要があるのか​​わかりません。汎用的な「可能なすべての例外をキャッチする」スタイルのtry / catchステートメントは好きではないことに注意してください。この場合、ファイルが存在しないときに発生する特定の例外をキャッチし、readFileSyncを実行しようとします。 接続の試行を処理する前の起動時にのみ同期機能を実行しているため、同期機能を使用してはならないというコメントは不要です:-)

6
最終的にtry catchブロック内から戻るのは悪い習慣ですか?
だから今朝、次のようなコードに出くわしました。 try { x = SomeThingDangerous(); return x; } catch (Exception ex) { throw new DangerousException(ex); } finally { CleanUpDangerousStuff(); } これで、このコードは正常にコンパイルされ、正常に機能しますが、特に関連付けられた最終的なものがある場合は特に、tryブロック内から戻るのは適切ではないと感じます。 私の主な問題は、がそれ自身の例外を最終的にスローするとどうなるかです。あなたは返された変数を持っていますが、処理する例外も持っています...だから私は他の人がtryブロック内から戻ることについてどう思うか知りたいですか?

1
powershell 2.0は、例外にアクセスする方法をキャッチしてみてください
これはtry catchPowerShell 2.0の $urls = "http://www.google.com", "http://none.greenjump.nl", "http://www.nu.nl" $wc = New-Object System.Net.WebClient foreach($url in $urls) { try { $url $result=$wc.DownloadString($url) } catch [System.Net.WebException] { [void]$fails.Add("url webfailed $url") } } しかし、私がやりたいのはc#のようなものです catch( WebException ex) { Log(ex.ToString()); } これは可能ですか?


9
C#はスタックオーバーフロー例外をキャッチします
スタックオーバーフロー例外をスローするメソッドを再帰的に呼び出しています。最初の呼び出しはtry catchブロックで囲まれていますが、例外はキャッチされていません。 スタックオーバーフロー例外は特別な方法で動作しますか?例外を適切にキャッチ/処理できますか? 関連するかどうかはわかりませんが、追加情報: メインスレッドで例外がスローされない コードが例外をスローしているオブジェクトは、Assembly.LoadFrom(...)。CreateInstance(...)によって手動でロードされます

16
ネストされたtry catchブロックを回避するパターン?
計算を実行する方法が3つ(またはそれ以上)あり、それぞれ例外が発生して失敗する状況を考えてみます。成功するものが見つかるまで各計算を試行するために、私は次のことを行っています: double val; try { val = calc1(); } catch (Calc1Exception e1) { try { val = calc2(); } catch (Calc2Exception e2) { try { val = calc3(); } catch (Calc3Exception e3) { throw new NoCalcsWorkedException(); } } } これをより良い方法で実現する受け入れられたパターンはありますか?もちろん、失敗したときにnullを返すヘルパーメソッドで各計算をラップし、??演算子を使用することもできますが、これをより一般的に行う方法があります(つまり、使用する各メソッドのヘルパーメソッドを記述する必要はありません) )?私は、特定のメソッドをtry / catchでラップし、失敗するとnullを返すジェネリックスを使用して静的メソッドを作成することを考えましたが、どうすればよいかわかりません。何か案は?

11
JavaScriptで可能な{}キャッチなしで{}を試しますか?
何かを返すか、エラーをスローする関数がいくつかあります。メイン関数でこれらをそれぞれ呼び出し、各関数から返された値を返すか、最初の関数がエラーをスローした場合は2番目の関数に進みます。 だから基本的に私が現在持っているのは: function testAll() { try { return func1(); } catch(e) {} try { return func2(); } catch(e) {} // If func1 throws error, try func2 try { return func3(); } catch(e) {} // If func2 throws error, try func3 } しかし、実際にはtryそれを返したいだけです(つまり、エラーがスローされない場合)。catchブロックはいらない。ただし、try {}(未使用)catch {}ブロックがないため、などのコードは失敗します。 私は入れjsFiddleに例を。 それで、catch同じ効果を達成しながらこれらのブロックを削除する方法はありますか?

7
C ++で例外が(舞台裏で)機能する方法
例外は遅いと人々が言っ​​ているのを見続けていますが、証拠はありません。それで、それらがそうであるかどうかを尋ねるのではなく、例外が舞台裏でどのように機能するかを尋ねるので、それらをいつ使用するか、そしてそれらが遅いかどうかの決定をすることができます。 私の知っている限りでは、例外は、何度もリターンを行うのと同じですが、各リターンの後に、別のリターンを行う必要があるか、停止する必要があるかどうかもチェックします。戻るのをいつ停止するかをどのように確認しますか?例外のタイプとスタックの場所を保持する2番目のスタックがあると思います。その後、そこに到達するまで戻ります。また、この2番目のスタックがタッチされるのは、スローと各トライ/キャッチ時だけだと思います。AFAICTが戻りコードを使用して同様の動作を実装すると、同じ時間がかかります。しかし、これはすべて推測にすぎないので、実際に何が起こっているのかを知りたいのです。 例外は実際にはどのように機能しますか?


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