亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostSharp AOP編程:4.PostSharp的OnExceptionAspect類基本組成

發布時間:2020-06-25 03:55:27 來源:網絡 閱讀:426 作者:程興亮 欄目:編程語言

        在PostSharp中得OnExceptionAspect類是針對異常的消息截取。繼承于它的特性將可以在發生異常的時候對方法體內的異常截取,并且做出動作,看是否停止本程序運行,還是忽略異常。

        這個類里面有兩個主要的函數可以重載分別是OnException(MethodExecutionArgs args)、GetExceptionType(System.Reflection.MethodBase targetMethod)。他們分別意義如下:

        OnException(MethodExecutionArgs args):當發生異常時截取異常發生的位置(在哪個命名空間?哪個類?哪個方法?)、異常類型、異常消息等信息,并且可以異常將如何處理。

        GetExceptionType(System.Reflection.MethodBase targetMethod):設置需要攔截的異常類型,比如設置需要攔截參數異常,那么其他的異常類型發生時將不會被此特性所攔截。

        首先我們編寫一個繼承于OnExceptionAspect類的特性,并且重載相關函數如下代碼:

 

  1. [Serializable
  2. public class ExceptionAttribute : OnExceptionAspect 
  3.     //當異常發生時 
  4.     public override void OnException(MethodExecutionArgs args) 
  5.     { 
  6.         Console.WriteLine("______________________________________________________________________________"); 
  7.         Console.WriteLine("異常時間:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); ; 
  8.         Console.WriteLine("異常類名:" + args.Method.DeclaringType.FullName); 
  9.         Console.WriteLine("異常方法:" + args.Method.Name); 
  10.         Console.WriteLine("異常信息:" + args.Exception.ToString()); 
  11.         args.FlowBehavior = FlowBehavior.Continue
  12.     } 
  13.  
  14.     //需要攔截的異常類型為ArgumentException 
  15.     public override Type GetExceptionType(System.Reflection.MethodBase targetMethod) 
  16.     { 
  17.         return typeof(ArgumentException); 
  18.     } 

        其次我們編寫一個目標類,此類中含有一個方法,方法內拋出參數異常,并為其添加Exception的特性,如以下代碼所示:

 

  1. class People 
  2.     [Exception] 
  3.     public void Test(int a, int b) 
  4.     { 
  5.         throw new ArgumentException("這里有參數錯誤,請檢查參數"); 
  6.     } 

        再編寫一個對比目標類,要實現同樣的效果需要遠遠多于我們使用PostSharp的情況,而且會讓我們的邏輯處理更為復雜和麻煩,如下代碼所示:

 

  1. class Pelple1 
  2.     public void Test(int a, int b) 
  3.     { 
  4.         try  
  5.         { 
  6.             throw new ArgumentException("這里有參數錯誤,請檢查參數"); 
  7.         } 
  8.         catch (ArgumentException args) 
  9.         { 
  10.             Console.WriteLine("______________________________________________________________________________"); 
  11.             Console.WriteLine("異常時間:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")); ; 
  12.             Console.WriteLine("異常信息:" + args.ToString());         
  13.         } 
  14.     } 

        最后我們在客戶端初始化People類并且引用方法如下代碼:

 

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         People p = new People(); 
  5.         p.Test(3,5); 
  6.  
  7.         Pelple1 p1 = new Pelple1(); 
  8.         p1.Test(3, 5); 
  9.         Console.ReadLine(); 
  10.     } 

        如需源碼請點擊 PostSharpOnExceptionAspect.zip  下載,運行效果如下圖:

PostSharp AOP編程:4.PostSharp的OnExceptionAspect類基本組成

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郧西县| 灵璧县| 桐城市| 莱芜市| 京山县| 瓦房店市| 偃师市| 沾化县| 香河县| 彰化县| 青铜峡市| 永靖县| 沈阳市| 襄樊市| 织金县| 霍城县| 武陟县| 文登市| 香格里拉县| 建瓯市| 福鼎市| 昌图县| 库伦旗| 乡宁县| 深泽县| 阜康市| 荣昌县| 新野县| 藁城市| 当雄县| 巩义市| 伊通| 湘阴县| 尤溪县| 鄂伦春自治旗| 长丰县| 伽师县| 安顺市| 荃湾区| 陵川县| 崇州市|