JavaScript基础---异常US信用盘平台出租处理和循环语句

你可以US信用盘平台出租 haozbbs.com Q1446595067 用 throw 语句抛出一个异常并且用 try...catch 语句捕获处理它

throw 语句
try...catch 语句

1.throw语句

使用throw语句抛出一个异常。当你抛出异常,你规定一个含有值的表达式要被抛出。

语法:throw expression;

你可以抛出任意表达式而不是特定一种类型的表达式。下面的代码抛出了几个不同类型的表达式

throw "Error2";   // String type
throw 42;         // Number type
throw true;       // Boolean type
throw {toString: function() { return "I'm an object!"; } };

2.try...catch 语句

try...catch 语句标记一块待尝试的语句,并规定一个以上的响应应该有一个异常被抛出。如果我们抛出一个异常,try...catch语句就捕获它

try...catch 语句有一个包含一条或者多条语句的try代码块,0个或多个的catch代码块,catch代码块中的语句会在try代码块中抛出异常时执行。 换句话说,如果你在try代码块中的代码如果没有执行成功,那么你希望将执行流程转入catch代码块。如果try代码块中的语句(或者try 代码块中调用的方法)一旦抛出了异常,那么执行流程会立即进入catch 代码块。如果try代码块没有抛出异常,catch代码块就会被跳过。finally 代码块总会紧跟在try和catch代码块之后执行,但会在try和catch代码块之后的其他代码之前执行

catch块来处理所有可能在try块中产生的异常,捕捉块指定了一个标识符(上述语句中的catchID)来存放抛出语句指定的值;你可以用这个标识符来获取抛出的异常信息。在插入throw块时JavaScript创建这个标识符;标识符只存在于catch块的存续期间里;当catch块执行完成时,标识符不再可用

finally块无论是否抛出异常都会执行。如果抛出了一个异常,就算没有异常处理,finally块里的语句也会执行

    function getMonthName(mo) {
        mo = mo - 1; // Adjust month number for array index (1 = Jan, 12 = Dec)
        let months = ["Jan","Feb","Mar","Apr","May","Jun","Jul",
            "Aug","Sep","Oct","Nov","Dec"];
        if (months[mo]) {
            return months[mo];
        } else {
            throw "InvalidMonthNo"; //throw error
        }
    }
    let monthName,myMonth = 15;
    try { // statements to try
        monthName = getMonthName(myMonth); // function could throw exception
    }
    catch (e) {
        console.log(e); //"InvalidMonthNo"
        monthName = "unknown";
    }

3.Error对象

    function getMonthName(mo) {
        mo = mo - 1; // Adjust month number for array index (1 = Jan, 12 = Dec)
        let months = ["Jan","Feb","Mar","Apr","May","Jun","Jul",
            "Aug","Sep","Oct","Nov","Dec"];
        if (months[mo]) {
            return months[mo];
        } else {
            throw (new Error("InvalidMonthNo")); //throw error
        }
    }
    let monthName,myMonth = 15;
    try { // statements to try
        monthName = getMonthName(myMonth); // function could throw exception
    }
    catch (e) {
        console.log(e); //Error: InvalidMonthNo
        monthName = "unknown";
    }

二、循环语句

JavaScript中提供了这些循环语句:

for 语句
do...while 语句
while 语句
label 语句
break 语句
continue 语句
for...in 语句
for...of 语句

1.for 语句

语法:for ([initialExpression]; [condition]; [incrementExpression]) { statement }

    let sum = 0;
    for (let i = 1; i < 100 ; i++) {
        sum += i;
    }
    console.log(sum); //4950

2.do...while 语句

语法:do { statement } while (condition);

    let sum = 0, i = 1;
    do {
        sum += i;
        i++;
    } while (i < 100);
    console.log(sum); //4950

3.while 语句

语法:while (condition) { statement }

    let sum = 0, i = 1;
    while (i < 100) {
        sum += i;
        i++;
    }
    console.log(sum); //4950

4.label 语句

语法:label : statement

使用一个标签来唯一标记一个循环,然后使用 break 或 continue 语句来指示程序是否中断循环或继续执行

    loop1:
    for (let i = 0; i < 3; i++) {
        loop2:
        for (let j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                continue loop1;
            }
            console.log(`i=${i},j=${j}`);
            /**
             i=0,j=0
             i=0,j=1
             i=0,j=2
             i=1,j=0
             i=2,j=0
             i=2,j=1
             i=2,j=2
             */
        }
    }

    loop1:
    for (let i = 0; i < 3; i++) {
        loop2:
        for (let j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                break loop1;
            }
            console.log(`i=${i},j=${j}`);
            /**
             i=0,j=0
             i=0,j=1
             i=0,j=2
             i=1,j=0
             */
        }
    }

5.break 语句

使用 break 语句来终止循环,switch, 或者是终止 label 语句

当你使用不带 label 的 break 时, 它会立即终止当前所在的 while,do-while,for,或者 switch 并把控制权交回这些结构后面的语句
当你使用带 label 的 break 时,它会终止指定的标记(label)的语句

    for (let i = 0; i < 3; i++) {
        for (let j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                break;
            }
            console.log(`i=${i},j=${j}`);
            /**
             i=0,j=0
             i=0,j=1
             i=0,j=2
             i=1,j=0
             i=2,j=0
             i=2,j=1
             i=2,j=2
             */
        }
    }

6.continue 语句

这个 continue 语句可以用来继续执行(跳过代码块的剩余部分并进入下一循环)一个 while, do-while, for, 或者 label 语句

当你使用不带 label 的 continue 时, 它终止当前 while,do-while,或者 for 语句到结尾的这次的循环并且继续执行下一次循环
当你使用带 label 的 continue 时, 它会应用被 label 标识的循环语句

    for (let i = 0; i < 3; i++) {
        for (let j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                continue;
            }
            console.log(`i=${i},j=${j}`);
            /**
             i=0,j=0
             i=0,j=1
             i=0,j=2
             i=1,j=0
             i=1,j=2
             i=2,j=0
             i=2,j=1
             i=2,j=2
             */
        }
    }

7.for...in 语句

for...in 语句来循环一个对象所有可枚举的属性。JavaScript 会为每一个不同的属性执行指定的语句。可以遍历Json对象

语法:for (variable in object) { statements }

    let array = ['a','b','c','d','e'];
    let obj = {
        'a':1,
        'b':2,
        'c':3,
        'd':4,
        'e':5
    };
    for (let k in array){
        console.log(k); //0 1 2 3 4
    }
    for (let k in obj) {
        console.log(`key:${k},value:${obj[k]}`);
        /**
         key:a,value:1
         key:b,value:2
         key:c,value:3
         key:d,value:4
         key:e,value:5
         */
    }

8.for...of 语句

语法:for (variable of object) { statement }

    let array = ['a','b','c','d','e'];
    for (let v of array){
        console.log(v); //a b c d e
    }

猜你喜欢

转载自blog.51cto.com/13864315/2140354