C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: エラー処理について


(過去ログ 130 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■76970 / inTopicNo.1)  エラー処理について
  
□投稿者/ DD (1回)-(2015/09/02(Wed) 00:54:15)

分類:[C#] 

c#を勉強しています。サービスでのエラー処理について教えてください
下記のようなプログラムがあったとした場合、最適なエラー処理はどこに記述すべきでしょうか
ログを吐き出し、クライアント側に値を返したいです
(エラーの場合は固有のエラー情報を返したい)
メソッドがたくさんあった場合、どういった処理がいいのかわからなくなってしまいました。

1.Mainにtryをいれ、エラー処理とログ出力し、Mainでかえす
2.Keisanにtryをいれ、エラー処理とログ出力し、Keisanでかえす
3.両方にtryをいれ、Keisanでthrowし、Mainでログ出力し、かえす


    Public void Main()
{
   var test = Keisan(1,2);
   contexit.Response.write(test);
}

 Public int Keisan(int a,int b)
{
  var kekka = b-a;

 return kekka;
}
        

引用返信 編集キー/
■76971 / inTopicNo.2)  Re[1]: エラー処理について
□投稿者/ 774RR (306回)-(2015/09/02(Wed) 07:16:41)
Public (P が大文字) とか C# に見えないんだけど...

異常処理というか例外処理というか、だと例えば
http://ja.stackoverflow.com/questions/14790/
http://d.hatena.ne.jp/NAL-6295/20050909/p1

提示例だと中身が簡単すぎてオイラたちでも悩ましいわけで
もうちょっと具体的に実際のコードがあるといいかも。
引用返信 編集キー/
■76972 / inTopicNo.3)  Re[2]: エラー処理について
□投稿者/ DD (2回)-(2015/09/02(Wed) 08:14:24)
No76971 (774RR さん) に返信
すみません。
PC閉じてしまい、スマホから投稿した為、おかしかったです。

一旦、教えていただいたリンクを読んで考えさせていただきます。
ありがとうございました。
引用返信 編集キー/
■76973 / inTopicNo.4)  Re[1]: エラー処理について
□投稿者/ WebSurfer (646回)-(2015/09/02(Wed) 09:51:53)
No76970 (DD さん) に返信

> 1.Mainにtryをいれ、エラー処理とログ出力し、Mainでかえす
> 2.Keisanにtryをいれ、エラー処理とログ出力し、Keisanでかえす
> 3.両方にtryをいれ、Keisanでthrowし、Mainでログ出力し、かえす

アップされているコードで発生する例外を try - catch で処置する
必要は全くないはずです。

というか、逆に、以下の記事に書いてあるように、"よほどのことが
ない限り、アプリケーションで try-catch を書いてはいけません"
というのが基本だと思います。

今後のために一度目を通しておくことをお勧めします。

.NETの例外処理 Part.1
http://blogs.msdn.com/b/nakama/archive/2008/12/29/net-part-1.aspx

.NETの例外処理 Part.2
http://blogs.msdn.com/b/nakama/archive/2009/01/02/net-part-2.aspx

基本は、上の記事に書いてあるように「異常事態」と「業務エラー」を
分けて考えることです。

例えば、Keisan メソッドの引数に渡す値をユーザー入力から取得して
いて、ユーザーが 1, 2 ではなく a, b と入力した場合が「業務エラー」
で、その処置はユーザーに入力間違いであることを通知して再入力を促
すということになるはずです。なお、「業務エラー」をチェックする際
は可能であれば例外は使用しないで、例えば上記の例では TryParse を
利用すべきです。

「異常事態」は、例えば実行中にメモリ不足などが発生した場合で、例外
がスローされますが、その例外を catch してもユーザーとしてはなんと
もできないはずなので、catch しないでアプリを終了させるべきです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -