C#錯誤調試方法
時間:2018-09-29 來源:未知
C#錯誤調試
錯誤分類
錯誤調試
一、錯誤分類:
1. 語法錯誤 -- 編譯期
2. 運行錯誤
二、錯誤調試
2.1正常模式下調試
1. 在VS中使用Console.Write查看變量的值 是否符合我們的預期
2. 在Unity中使用Debug.Log(“”) Debug.LogError(“”); Debug.LogWarn(“”);
2.2中斷模式下調試
設置斷點來調試程序,以下四種方式可以進行設置斷點
1. 右鍵代碼行,選擇breakpoint -> insert breakPoint“插入斷點”
2. 光標定位到代碼行,菜單欄調試Debug-> Toggle breakpoint切換斷點
3. 光標定位到代碼行按下F9
4. 在行首點擊,可以添加
2.3查看斷點
Debug(調試)-> windows(窗口)-> breakpoint(斷點)
單步運行
逐語句運行,一條語句一條語句,跳到函數內部運行。
逐過程運行,跳過函數運行。
調試過程中查看變量的值
1. 把鼠標放在代碼中變量的位置
2. 中斷列表在VS的左下角
A. 變量列表
B. 監視變量 : 可以輸入某個特定的變量
3. 調用堆棧和即時窗口
A. 在VS右下角有callstack列表
B. 即時窗口可以查看某個變量的值,也可以修改某個變量的值,也可以輸入表達式。
2.4錯誤處理(異常處理)
例如:數組下標越界index of array out of range,如果不去處理,則程序會停在這個位置不再執行。
異常處理try ... Catch ... Finally
Try{
}catch (<exception type> e)
{
}finally{
}
//catch可以有0~n個,finally有且僅有一個;當代碼發生異常,那么異常的類型和catch塊中的類型一樣的話,會執行catch塊中的語句。如果catch的參數不寫,則表示捕捉任何異常。finally表示是否出現異常都會執行它。
例:
Try{
Int[] array = {1,2 , 3, 4};
Int myElem = array[4];
}catch (IndexOutOfRange e){
Console.WriteLine(”發生了異常,越界了”);
}catch (NULLReferenceException e)
{
Console.WriteLine(“Null ReferenceException”);//如果沒有上面的catch,則程序會終止。因為這個異常不對,不匹配。當不寫catch的參數時,它會捕捉出現的任何異常信息
}
finally{
Console.WriteLine(“這是finally的語句”);
}
例:用戶輸入兩個數字求和。當輸入的不是數字字符時,處理該異常,如果出現該異常就讓用戶重新輸入,輸出
Static void Main(string[] args)
{
Int num = 0;
While(true){
Try{
num = Convert.ToInt32(Console.ReadLine());
//在try塊中只要有一行發生了異常,剩余的代碼都不會執行。
Break;//在輸入正確的時候,會跳出循環,如果放在catch外面,則輸入是否正確都會調出循環
}catch {
Console.WriteLine(“輸入的不是一個整數”);
}
Console.WriteLine(num);
}
}

