@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Exceptionについて

投稿者投稿内容
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-09-25 17:38
ログ出力する場合は、
ex.Message
ではなく
ex.ToString
が良いでしょう。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-25 18:13
安易に考えるのは反対

log4net や log AB を調べる
ポリシーを決めて、適用
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-09-25 18:20
引用:

SQLServerを使ったVBの入力アプリの場合
どのようなエラーは表示させて、どのようなエラーは詳細に表示させないのを
聞きたかったのです。(セキュリティの関係などで)



単純には「時と場合による」としか (^^;

「何をエラーとするか」は業務の性質なんかで変わりますし、実際に発生したエラーに対して「どういう対応をするべきか」も同様です。

「SQLServerを使ったVBの入力アプリ」では、いろんなパターンがありすぎて議論が発散してしまいます。

せめてどういう分野のアプリケーションで、オペレータはどんな層なのか、エラー発生時に利用現場にどれくらいの対応が望めるものなのか、とかが分かれば、それっぽい指針が出てくるんじゃないでしょうか。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-25 18:35
Jittaさん、ありがとうございます。

みさなんはlog4netとか使っているのでしょうか?
log4netは見てみます。

渋木宏明さん、ありがとうございます。

エラーは詳細に表示させず、ログファイルにて
対応しようかと思います。


ex.ToString をログファイルに
書き込むわけですが

プラス、アプリケーション名や時間も
併せて書き込む必要がありますよね?

それと、My.Application.Logというものがありますが
これを書き込むのか、ex.ToStringを書き込むのか

どのような処理方法が多いのでしょうか?

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2007-09-25 19:38
.NETでのログ出力は、
System.Diagnostics.Traceクラスが基本です。
http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.trace(vs.80).aspx

はじめからある機能なのですから、これで十分であれば、
これを使うことをお勧めします。

System.Diagnostics下のクラスでは機能不足ならば、これを
ラッピングしたクラス群がいくつか提供されています。

代表格が、Logging ABです。

Microsoft patterns and practices->Application Blocks->Logging Application Block

http://msdn2.microsoft.com/en-us/library/aa480464.aspx

連載 Enterprise Library概説
拡張性と使いやすさを併せ持つログ出力機能を実装しよう
http://www.atmarkit.co.jp/fdotnet/entlib/entlib04/entlib04_02.html


引用:

それと、My.Application.Logというものがありますが


これも、System.Diagnosticsをラップしたものだと思います。

要件に合い、かつ、使いやすいと思うものを選択すればよいの
ではないでしょうか。


エンドユーザに見せてはいけないメッセージはログに書いて、
エラーがあったことをユーザインタフェース層にまで伝播させ、
見せてもよいメッセージをユーザインタフェース層で表示する、
という感じの話の流れに賛同します。
という話になってますよね。


例外発生をどこでひろい、どこでログに書くかという点につい
ては、場合によっていろいろであって、一律にこれがよいとい
うものはないと思っています。
一律にすればよいのであれば、プログラミング言語がこんなに
柔軟性のあるものにはなっていないでしょうしね。

ただ、最近は、ビジネスロジック層のことはビジネスロジック
層で、ユーザインタフェース層のことは、ユーザインタフース
層で、という感じに、各階層の関連がなるべく疎になるように
設計するのがよいものとされていますね。疎結合というやつで
す。

_________________
たつごろー
codeseek
こみゅぷらす
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-09-25 20:14
引用:

エラーは詳細に表示させず、ログファイルにて
対応しようかと思います。



イベントログを使う、という手もあります。

利点は

・扱いが比較的簡単
・ログファイルのように「どこに作成するか」についてあまり深く悩まなくて良い
・各種監視ツールなどとの連携が容易

などです。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-09-25 20:48
引用:
たつごろーさんの書き込み (2007-09-25 19:38) より:
.NETでのログ出力は、
System.Diagnostics.Traceクラスが基本です。
http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.trace(vs.80).aspx

はじめからある機能なのですから、これで十分であれば、
これを使うことをお勧めします。



.NET Framework 2.0 からは、TraceSourceというクラスも提供されてますね。

TraceSource クラス (System.Diagnostics)
http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.tracesource(VS.80).aspx

TraceSourceを使用してトレースする、ログに書き込む: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/programing/tracesource.html


Microsoftは、TraceではなくTraceSourceを使うことを推奨しているようです。(下記ページ参照)

方法 : TraceSource とフィルタをトレース リスナと共に使用する
http://msdn2.microsoft.com/ja-jp/library/ms228993(vs.80).aspx
_________________
C#と諸々
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-25 22:58
すいません、迷ってしまいます。

エラーが発生した時、表示を簡素化するため
原因をつかむのにログファイルに書き込むのが
よいと思いました。

連載 Enterprise Library概説
拡張性と使いやすさを併せ持つログ出力機能を実装しよう

に使用例が書かれていました。

ex.tostring+アプリケーション名+時間を
テキストファイルに書き込むだけの方が
なんとなくシンプルに思えたのですが・・

でも、あまりみなさんはこのような
手法はとらないのでしょうか?


またイベントログを使う、という手もあります
ですがその利点にはひかれます。

具体的な方法を教えて頂けたら
幸いです。



スキルアップ/キャリアアップ(JOB@IT)