C#的調試和錯誤處理

來源:互聯網
上載者:User

再優秀的程式員在編程的過程中也會犯些錯誤,何況是我們這些初級程式學者;好的程式員會找出一些錯誤並修改它們.有時候程式中存在一些微妙的錯誤我們發現不了的時候就得跟蹤代碼進行調試.

一.Visual Studio中的調試

在偵錯模式下運行程式時,啟動並執行是編寫好的代碼.偵錯工具的資訊在VS執行每行代碼過程中發生了甚麼都有記錄,這些資訊儲存在Debug目錄下的.pdb格式檔案中.

在運行期間把文本寫入Output視窗是非常簡單的.此時可以使用一下兩個命令:

Debug.WriteLine() 

Trace.WriteLine()

這兩個命令函數的使用方法差不多,區別在第一個命令是在偵錯模式下運行而第二個還可以用於發布程式.引用這兩個函數還要在命名空間中加入: using System.Diagnostics;

static int MaxNum(int[] a)//

{

Debug.WriteLine("sort array begin");

int max = a[0];

int index;

for (int i = 1; i < a.Length; i++)

{

if (max < a[i])

{

max = a[i];    //中斷點設計

index = i;

}

}

Trace.Write("the index of the bigest number is");

return max;

其實有關調試的問題都可以自己解決,只有那些專門研究程式運行過程實現的人才會去關注Debug的過程,一般我們在發現程式沒有錯誤可以啟動並執行時候就不關心具體的執行過程.

二.異常處理.

在程式運行過程中存在異常,例如在開啟檔案的時候要判斷檔案是否存在才能開啟,如果不存在就可能引起異常導致程式中止.如果可能存在異常就要用一下的方法處理.,以保證程式正常運行.

try

{

<可能包含異常的執行過程>

}

catch(Exception 捕獲異常)

{

<異常處理>

}

finally{<最終會做甚麼>

}

異常的類型:1基本Exception.2: Application Exception類

3 與參數有關的異常類: ArgumentException類Format Exception類:

4: 與成員訪問有關的異常MemberAccessException類,該類包括三種子類

FileAccessException類: MethodAccessException類: 
   MissingMemberException類:

下來的例子在資料處理過程中很常見.

int x1 = 40;

int x2 = 0;

int x3;

Label re = new Label();

re.Text=Convert.ToString(x1/x2)

執行結果是

 

Try---catch---finally的異常處理模式是這樣的執行的.

Try是程式意圖做甚麼,Catch是捕獲Try過程中可能出現的異常,如果有異常的話而且異常和Catch的類型一樣,Catch處理異常.finally中的代碼不管有沒有異常都會執行.當然可以有多個Catch來處理捕獲程式執行過程中可能出現的多個異常.

這裡就不多說了.下面列舉出C#處理過程中存在的不同異常類型.,
MemberAccessException                           訪問錯誤:類型成員不能被訪問   
ArgumentException                               參數錯誤:方法的參數無效   
ArgumentNullException                           參數為空白:給方法傳遞一個不可接受的空參數   
ArithmeticException                             學計算錯誤:由於數學運算導致的異常,覆蓋面廣。   
   ArrayTypeMismatchException                      數群組類型不匹配   
    
DivideByZeroException                           被零除   
    FormatException                                 參數的格式不正確   
    IndexOutOfRangeException               索引超出範圍,小於0或比最後一個元素的索引還大   
    InvalidCastException                            法強制轉換,在顯式轉換失敗時引發   
    MulticastNotSupportedException                  不支援的組播:組合兩個非空委派失敗時引發   
    NotSupportedException                           調用的方法在類中沒有實現   
    NullReferenceException                          引用Null 參考對象時引發   
    OutOfMemoryException                            無法為新語句分配記憶體時引發,記憶體不足   
    OverflowException                               溢出   
    StackOverflowException                          棧溢出   
    TypeInitializationException                     錯誤的初始化類型:靜態建構函式有問題時引發   
    NotFiniteNumberException

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.