Skip to content

16.中斷與多分之語句的應用

中斷語句常常與循環語句配合使用,中斷語句的用途是提前中斷循環。

main() {
    var i = 1;
    var res = 0;
    while(true){
        res+=i;
        i++;
        if(i>100){
            break;
        }
    }
    print(res);//5050

上面的break語句就是中斷語句,當代碼執行到break語句時,會直接跳出當前的循環執行後面的代碼,因此即使我們不對循環的判定條件進行操作,在循環過程中也很容易結束循環。
Dart中還提供了一個很常用的中斷語句:continue語句。break語句會直接跳出本層循環,執行循環後面的代碼,而continue語句則是跳過本次循環後,還會進行循環條件的判定,如果條件依然滿足,就會繼續執行循環。示例代碼如下:
//下面的循環將不會輸出任何信息 直接被跳過
for(var j=0;j<3;j++){
        if(j==0){
            break;
        }
        print(j);
    }
//下面的循環的第一次循環將會被跳過 之後正常 將輸出1 2
for(var j=0;j<3;j++){
    if(j==0){
        continue;
    }
    print(j);
}

其實多分支選擇語句可以完成的工作使用if-else語句都可以完成,但是在某些場景下,使用多分支選擇語句switch-case能夠寫出更加整齊規則的代碼。在學習if-else語句時舉過一個小例子,以學生的分數來劃分學生的成績段,代碼如下:
var ar = "滿分";
    switch(ar){
        case "不及格":
        {
            print("成績在60分以下");
        }
        break;
        case "及格":
        {
            print("成績在60-75分");
        }
        break;
        case "良好":
        {
            print("成績在75-85分");
        }
        break;
        case "優秀":
        {
            print("成績在85分以上");
        }
        break;
        default:
        {
            print("輸入異常!!");
        }
    }
}

switch-case語句的作用是用來進行條件的匹配,switch關鍵字後面填寫要進行匹配的變量,之後列舉case語句進行匹配,如果匹配成功,就會執行對應的case代碼塊。需要額外注意,每一個case塊的結尾都需要使用break語句進行中斷,否則運行時會有異常產生。

異常處理

任何代碼都有產生異常的可能,程序的邏輯越複雜、代碼量越大,產生異常的可能性也越大。在編寫代碼時,我們不能強求沒有異常產生,而是要將注意力放在產生異常後的處理工作。

main() {
    var a = -10;
    try{
        if(a<0){
            throw "輸入有誤";
        }   
    }on int{
        print("捕獲了整數類型的異常");
    }on String catch(exp,st){
        print("捕獲了字符串類型的異常:$exp\n$st");
        // rethrow;//繼續拋出異常
    }finally{
        print("異常處理結束");
    }
    print("程序完成");
}

try結構有這樣的特點,首先其後面的代碼塊中需要將可能產生異常的代碼放入,可以是幾行代碼,也可以是函數,等等。如果這些代碼在執行時拋出異常,就會將異常捕獲,並根據異常的類型將其分配入指定的處理模塊。try結構塊後面跟隨的on語句用來指定要捕獲的異常類型,例如,如果拋出的異常是字符串類型的對象,就會進入on String對應的代碼塊繼續執行代碼,這裡面我們可以根據實際情況來進行異常的處理,完成後程序會繼續向後執行。如果需要獲取具體的異常對象,就可以使用catch語句來捕獲


Last update : 13 novembre 2024
Created : 13 novembre 2024

Comments

Comments