<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>try catch finally</title><script>// 异常最大的特征,就是一旦出现异常,后面的代码将不会再执行// 那为了保证后面的代码在出现异常之后,还能继续执行,所以就要进行异常处理// 注意 语法异常 try catch无法捕获// 异常捕获语句// try catch finally// 手动抛出异常信息 使用throw关键字// a();// function test() {// console.log("我是之后的代码");// }// test();// 语法:// try {// // a();// // 可能会出现问题的代码// throw "手动抛出异常";// console.log("不再执行");// } catch (e) {// // 出现异常后的处理代码// console.log(e);// }// function test() {// console.log("我是之后的代码");// }// test();function sum(num1, num2) {if (num1 == undefined || num2 == undefined) {throw {errMsg:"手动抛出异常, 不会在函数返回值接收到, 而是在catch(e)中接收到",errCode: 13888888888}; // 类似相当于 return {errMsg: "能不能好好玩耍了,乖乖给我传参",errCode: 13888888888}console.log("不会打印");} else {return num1 + num2;}}// sum(0);try {console.log(sum(0)); // 啥都没有} catch (e) {console.log(e); // => {errCode: 13888888888, errMsg: "手动抛出异常, 不会在函数返回值接收到, 而是在catch(e)中接收到"}console.log(e.errMsg); // => 手动抛出异常, 不会在函数返回值接收到, 而是在catch(e)中接收到} finally {console.log("不管有没有出现异常,这里代码都会执行"); // => 不管有没有出现异常,这里代码都会执行}// // 异常捕获语句的完整形式// try {// // 可能出现异常的代码// xyz();// // 注意 语法异常 try catch无法捕获(js执行分两个阶段 先解析(预编译) 后执行)// // var a++++;// } catch (e) {// // 出现异常后的处理代码// console.log(e); // => ReferenceError: xyz is not defined// } finally {// console.log("我是finally中的代码");// // 不管有没有出现异常,这里代码都会执行// // node.js// // 做释放资源的操作// }</script></head><body></body>
</html>