一般我們在程式中,如果知道可能發生的異常類型,儘可能捕獲,彈出提示給用戶端,實在不知道的異常,捕獲後寫日誌記錄,商務邏輯上可忽略
1、NullReferenceException Null 參考異常
2、StackOverflowException 棧溢出
3、TimeoutException 當已達到指定的逾時時間時引發的異常
4、 ArgumentException 在向方法提供的其中一個參數無效時引發的異常 (在某些控制項的事件中,可能會出現參數類型無效的異常)
5、 ThreadAbortException 在對 Abort 方法進行調用時引發的異常
6、IndexOutOfException:該類用於處理下標超出了數組長度所引發的異常
7、IOException:該類用於處理進行檔案輸入輸出操作時所引發的異常
8、ArithmeticException:該類用於處理與算術有關的異常
9、DivideByZeroException:表示整數貨十進位運算中試圖除以零而引發的異常
二、類型轉換
is的規則如下:
• 檢查物件類型的相容性,並返回結果,true或者false;
• 不會拋出異常;
• 如果對象為null,則傳回值永遠為false
as的規則如下:
• 檢查物件類型的相容性,並返回結果,如果不相容就返回null;
• 不會拋出異常;
• 如果結果判斷為空白,則強制執行類型轉換將拋出NullReferenceException異常。
代碼:
if ( o is A )
{A a =(A)o;}
A a=(A)o;
if(a!=null){}
三、介面與抽象類別的異同?
相同點
• 都不能被直接執行個體化,都可以通過繼承實現其抽象方法。
• 都是面向抽象編程的技術基礎,實現了諸多的設計模式。
不同點
• 介面支援多繼承;抽象類別不能實現多繼承。
• 介面只能定義抽象規則;抽象類別既可以定義規則,還可能提供已實現的成員。
• 介面是一組行為規範;抽象類別是一個不完全的類,著重族的概念。
• 介面可以用於支援回調;抽象類別不能實現回調,因為繼承不支援。
• 介面只包含方法、屬性、索引器、事件的簽名,但不能定義欄位和包含實現的方法;抽象類別可以定義欄位、屬性、包含有實現的方法。
• 介面可以作用於實值型別和參考型別;抽象類別只能作用於參考型別。例如,Struct就可以繼承介面,而不能繼承類。
三、數組間的拷貝與複製、深拷貝、淺拷貝的區別等
淺拷貝:如果數組中的成員為實值型別(如:int,float,double,byte等),則完全複製數值到目標數組中,如果是參考型別(如使用者自定 義類型、或者是類庫中的類類型:ArrayList等),則指複製引用給目標數組
深拷貝:則是完完全全的建立一個個新對象.對原來數組中的所有對象全部建立新對象.對新數組中的修改不會影響原來數組中的值或對象CopyTo()和Clone()都屬於淺拷貝,這一點是毋庸置疑的
如何?深拷貝?
.NET庫中似乎沒有提供深拷貝的方法,若要實現深拷貝,需要自己遍曆數組,對原數組中的每個對象實現拷貝,層層深入,直到這個對象中的對象中的對象……中的對象為實值型別為止
因為只有實值型別才是完全拷貝,對一個值進行修改不會影響另一個相同的值