- - PR -
C# での例外処理の後処理
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-19 21:53
下記のようなコードで、例外処理の後処理について 先輩諸氏のアドバイスを頂ければと思っております。 CallMethod2で例外をキャッチしていますが、ここで例外を キャッチし処理をした後、直ぐに、このCallMethod2の処理を中断し、 呼び出し元にエラーを返したいと思っているのですが、 こうした事は可能でしょうか? catch (Exception ex){}の中で return; するなどしてみましたが、 上手く行きませんでした。 または、こうした場合は、CallMethod2 で例外処理はせず、 CallMethod1 で例外処理をする方が良いのでしょうか? 環境をC#に移行し始めたばかりで、まだセオリーが分かっていない のだと思いますが、何卒ご教授願えればと思います。 static void Main(string[] args) { CallMethod1(out value1) } CallMethod1(out string value1) { CallMethod2(out value2) } CallMethod2(out string value2) { try{ } catch (Exception ex) { } } | ||||
|
投稿日時: 2009-02-19 22:22
「呼び出し元にエラーを返す」というのが、具体的にどういうことをイメージして言っているのか分かりませんが try { // 何かする } catch { throw; } てこと? | ||||
|
投稿日時: 2009-02-19 22:49
渋木宏明(ひどり)様
早速のご返信誠にありがとうございます。 また、質問の内容が不明瞭であった点をお詫びいたします。 「呼び出し元にエラーを返す」ということですが、例えば、こういう事をしたいと 思っております(例として適当かどうか分かりませんが) try { // 何かする } catch { value2 = "Error" return value2; } もし、何かアドバイスを頂戴出来るようでしたら幸いです。 | ||||
|
投稿日時: 2009-02-19 22:53
試してないということでしょうか? それとも、試してできたけれど、この手法が問題ないのかという問いなのでしょうか? 構造的にはできるかもしれませんが、なんでもかんでもcatchして続ければ良いというわけでもありません。 AccessViolationExceptionとか起きた後に処理を続けてもあんまり良いことはなかったりしますし、例外次第では素直に落ちた方がいいこともあります。 | ||||
|
投稿日時: 2009-02-19 22:54
エラーを返したいとは 例外を返したいという事か、明示的にエラーコードの様な値を返したいかどちらでしょうか。 例外を返したいのであれば try catch しなければどんどん上位に伝播していきます。 エラーコードを返したいのであれば・・・ っていうか引数の out で返したいのでしょうか? であれば catch の中で return じゃなくて out で返す変数に代入すればいいと思います。 でもこのコードってコンパイルしようとしてもエラー出まくりませんか? | ||||
|
投稿日時: 2009-02-19 22:59
書き込み進んでましたね・・・。
呼び出し元にエラーかどうかを返したいのであれば
で良いんじゃないでしょうか。 ただ C# の基本的な事を知らないまま作ろうとしている様なので 勉強しても良いと思います。 | ||||
|
投稿日時: 2009-02-20 07:18
「うまくいきませんでした」とは、
どの様なことを期待して、 どの様にコードを書いたところ(少し書いてあるけど、まだ曖昧)、 どの様な結果になった のでしょうか? | ||||
|
投稿日時: 2009-02-22 00:27
こんばんは、かずいです。
ここでリターンした値を見て何か処理をしてプログラムを続行するのでしょうか? それとも、リターンした後もキャッチしたいんでしょうか? まずは、ココをはっきりさせないとピンポイントのアドバイスが出来ないかと・・・。 |
1