カスタム例外
C#が例外クラスの富を提供していますが、唯一のカスタム例外クラス他のいくつかの要件を満たすためです。今日はつまり、例外情報にログに印刷することができ、機能はシンプルで追加するには、この例外クラスを定義します。
以下のようにコードは次のとおりです。
[直列化] パブリック クラス PFTException:例外 { パブリック PFTException() { } 公共 PFTException(文字列メッセージ) :塩基(メッセージ) { PFTLog.Error(メッセージ、()=> {})。 } 公共 PFTException(文字列のMessageFormat、paramsはオブジェクト []引数) :ベース(文字列 .Format(のMessageFormat、引数)) { PFTLog.Error(文字列を .Format(のMessageFormat、引数)、()=> {}); } 公共 PFTException(文字列メッセージのInnerException例外) :ベース(メッセージのInnerException) { //レコードのみ最も原始的な例外情報IF!((のInnerExceptionはIS PFTException )) { PFTLog.Error(メッセージのInnerException、()=> {}); } } /// <まとめ> インタフェースするために必要なISerializationを実装///デシリアライズコンストラクタ。/// </要約> /// <PARAM NAME = "情報"> </ param>の/// <PARAM NAME = "文脈"> </ param>のプライベート PFTException(たSerializationInfo情報、StreamingContextコンテキスト):ベース(情報、コンテキスト) { //するStringInfo = info.GetString( "するStringInfo"); } /// <まとめ> /// GetObjectDataオーバーライド方法。カスタムフィールドを追加すると、GetObjectData達成するために、基本クラスのメソッドをオーバーライドする必要があります/// </要約> /// <PARAM NAME = "情報"> </ param>の/// <PARAM NAME = "コンテキスト"> </ PARAM> 公共オーバーライド無効 GetObjectData(たSerializationInfo情報、StreamingContextコンテキスト) { //カスタムシリアル化データメンバ//info.AddValue("StringInfo」するStringInfo); //基本クラスのメソッド、そのメンバーの配列を呼び出しベース .GetObjectData(情報、コンテキスト); } }
[私が前に見ることができる方法ログlog4netのロギングを実現し、]、我々はPFTException直接情報を投げるとき、我々はそれが例外である場合、例外はどうかPFTException自体決定することで、内部のログメッセージに情報を保存しますそうでない場合、それはまた、ログに情報を記録する必要が異常ベースのシステムを意味します。