C#のtryの入れ子についての疑問
- C#でのtry文の入れ子について疑問があります。具体的には、try文の入れ子でエラーが発生した場合、どのcatch文が処理されるのか、そしてfinally文はどの段階で処理されるのかが気になります。
- 例えば、メソッドaaa()内でメソッドbbb()を呼び出し、bbb()内でエラーが発生した場合、aaa()のcatch文が処理されるのか、bbb()のcatch文が処理されるのかが分かりません。同様に、finally文はどの段階で処理されるのかも知りたいです。
- このような場合、エラーが発生した時点で処理が終了してしまうのか、または例外が発生しても処理が続行されるのか理解できません。C#のtry文の入れ子について詳しく教えてください。
- ベストアンサー
c# の try の入れ子
try の入れ子はどちらで処理されるのでしょうか? 例 public aaaa() { try(){ bbbb(); } catch(){ } finary(){ } } private bbbb() { try(){ xxxxx ← ここでエラーになる } catch(){ } finary(){ } } この場合、 catch()処理は aaaa() の catch() を行う?それとも bbbb() ? finary() ()処理は aaaa() の finary() を行う?それとも bbbb() ?
- yamada009
- お礼率40% (730/1808)
- C・C++・C#
- 回答数3
- ありがとう数0
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エラー箇所でスローされたものと、catchでキャッチするものにもよるので回答できません。 基本は次のurlでも読んでください。 http://msdn.microsoft.com/ja-jp/library/s7fekhdy%28v=vs.80%29.aspx
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
まず, この質問文にあるプログラムは間違っています. 「finally()」という書き方はできませんし, 「catch()」も文法的に不正です. そして, この「catch()」が不正であることから, 「このプログラムにおいて」「catch() は bbbb() の方で実行され」るかどうかを判断することは不可能です. だから #1 では「発生した例外を受け取れる catch が受け取る」という, 一般的な原則しか書いていません... ん~, 正確には 「発生した例外を受け取れる, 一番内側の try に付随する catch が受け取る」 か. finally は (ここも文法的には不正だが) 最終的に両方とも実行されます.
- Tacosan
- ベストアンサー率23% (3656/15482)
finary じゃなくって finally では? そして発生した例外を受け取れる catch が受け取る. finally の部分は, try ブロックを抜け出すときには必ず実行される.
関連するQ&A
- try catchについて
try catchの動きで質問があります。 以下が簡略化したソースです。 -------ここから--------------------- ストリーム1; ストリーム2; try{ try{ //ストリーム1を使った処理 }catch(IOException e){ throw e; }finally{ //ストリーム1のクローズ } try{ //ストリーム2を使った処理 }finally{ //ストリーム2のクローズ } } catch(IOException e){ throw new hogeException(); } ------ここまで-------------------------- 内側でスローされた例外は、外側でcatchされるのですか? また、内側でcatchをしなかった場合、外側でcatchされるのですか? この2点を教えていただきたいです。 よろしくお願いします。
- ベストアンサー
- Java
- try{}catch(){}とデストラクタの関係を教えてください。
try-catchでメモリ確保を含むクラスをスローした場合、デストラクタはどの時点で働くのか、教えてください。たとえば、↓の使いかたは大丈夫でしょうか? 【1】 try{ throw(CError(100, "エラー情報")); }catch(CError& err){ //ここでerrを参照しても問題ないのでしょうか? } 【2】 try{ CError err(100, "エラー情報"); throw(err); // (1) }catch(CError& err){ //ここでerrを参照しても問題ないのでしょうか? //まだデストラクタはちゃんと動作するのでしょうか? //catchが呼び出し元のメンバであったりしても大丈夫なのでしょうか? } 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- シングルコーテーション(')とダブルコーテーション(")の入れ子について
HTMLにおける、シングルコーテーション(')とダブルコーテーション(")の入れ子について教えてください。 例) document.write('<img src="http://xxxxx" onMouseOver="aaaaaa(#bbbb#)">'); 上記の#の部分は何を使えば良いですか? また、更に入れ子にする場合は、どのような感じになりますか?
- ベストアンサー
- HTML
- 【VC2005】サブルーチンを同一プロジェクト中の他の****.hから呼び出せませんか?
VC超超初心者です。 あるサブルーチンのソースコードをAAAA.h内に private : System::Void XXXXX(){ ※中身省略 } という具合に書いていました。 AAAA.hだけでなく、BBBB.hからもサブルーチンXXXXX()を 呼ぶ必要になったため、 上記のprivate → public に変更しましたが、 BBBB.h内では、XXXXX()を認識しません、とエラーが出てきます。 どうしたらよいか、どなたか教えて頂けませんでしょうか? よろしくお願いします。
- 締切済み
- C・C++・C#
- [JAVA]try 内の変数を外で!?
お世話になります! try{ int rsCount = ... ... }catch(Exception e){ ... } out.println(rsCount); とした場合、初期化されていない可能性があるとかで使えません。 try catch 内で定義したものは使えないのですか?? 反対に、どうすれば解決できますか?
- ベストアンサー
- Java
- 2つの“try ~ catch”
こんにちは。 Javaの簡単なネットゲームのサンプルで勉強しています。 ゲームに使う変数[プレイヤー名、プレイヤー座標X,Y プレイヤー残体力]は、プレイヤーごとにハッシュテーブルに格納されることがわかりました。 JavaのハッシュテーブルのデータをJSObjectを使ってJavaScriptに渡したいのですが、ハッシュテーブルも、 JSObjectも try~catch を使っています。 ハッシュテーブルのtry~catch内でなければゲームに使う変数は取得できないと思うのですが、try~catch にJSObjectのtry~catchを入れ子にするようなプログラムの組み方がわかりません。 このような場合どのように組むのでしょうか? ご教授ください。
- 締切済み
- Java
- C++のtryとcatch
C++で、例外処理としてtryがあるのですが、どういった使い方をするのでしょうか? それと、catchも使い方がわかりません。 どなたか教えてください。 よろしくお願いします。
- 締切済み
- C・C++・C#
- 例外処理(try...catch...)ができない?
(1/2) 文末のように、よくある(1) 和暦→西暦、(2) 西暦→和暦 変換スクリプトで、 nullだったり半角数字だったりした場合のエラー処理として、 (1) は、次のようにしたらOKでした。 try{ alert("西暦"+wareki+"年"); } catch(e) { alert( "エラーです。入力した値を確認して下さい。" ); } しかし、(2) は同様に次のようにしても、nullや半角英字だったりすると スクリプトエラーになってしまいます(例外処理されない) try{ alert(seireki1+seireki+"年"); } catch(e) { alert( "エラーです。入力した値を確認して下さい。" ); } どこに誤りがあるのでしょうか?よろしくお願い致します。
- ベストアンサー
- JavaScript
- try catch 文について
jcpadでプログラムを組んでいます。 コンパイル実行すると 「例外 java.io.IOException は報告されません。スローするにはキャッチまたは、スロー宣言をしなければなりません。」 というエラーがでるのですが、BufferedReaderやDataInputStreamでは 例外処理(try~catch)は必ず書かないといけないんですか?
- ベストアンサー
- Java
補足
finally の間違いです。 それで結局catch() は bbbb() の方で実行され finally() は aaaa() bbbb() の両方で実行されるということでしょうか?