JavaScript

JS try catch(异常处理)简介说明

下文笔者讲述try,catch的简介说明,如下所示
日常开发中,程序都会遇到一些无法预计的错误,如:方法未定义,网络错误,文件不存在,无操作权限等异常情况
那么JavaScript也一样,会产生一些运行中的错误,下文笔者将讲述JS中错误异常简介及处理方法,如下所示

JavaScript中错误异常的分类

语法错误:
   也称为解析错误
   一般是因为代码存在某些语法错误引起的
    当发生语法错误时,代码会停止运行

运行时错误:
   也称为异常
   发生在程序运行期间
    如:
	   调用未定义的方法
       读取不存在的文件等
       发生运行时错误也会终止代码运行;

逻辑错误:
    逻辑错误常指逻辑错误导致程序运行异常或终止运行

JS中错误和异常区别

错误(Error):
    常指代码运行之前出现
    在运行JavaScript程序之前
     JavaScript解释器会先对代码进行检查
      如果代码有误,如某些语法错误,浏览器就会报出相应的错误,只有将错误修正后,代码才能运行。

异常(Exception):
     指代码运行中出现
     如:
	   调用某个未定义的方法、读取不存在的文件等
     在出现异常之前
     代码的运行并不受影响
      当出现异常时
      会在浏览器控制台输出错误信息,此时程序也终止运行

JavaScript异常处理

异常处理的功能:
    用于捕捉产生异常的代码
    使整个程序不会因为异常而终止运行
    在JavaScript中,可以使用try catch 语句来捕获异常
   并做出相应处理
   
   try catch语法格式如下所示:
    try {
		// 可能会发生异常的代码
	} catch(error) {
		// 发生异常时要执行的操作
    }
JavaScript异常处理示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>linux28.com -- JavaScript</title>
</head>
<body>
    <script>
        try {
            var title = "JavaScript";
            document.write(title);
            // 调用一个未定义的变量
            document.write(str);
            // 若发生错误,则不会执行以下行
            alert("所有语句都已成功执行。");
        } catch(error) {
            // 处理错误
            alert("错误信息: " + error.message);
        }
        // 继续执行下面的代码
        document.write("<p>Hello World!</p>");
    </script>
</body>
</html>

//代码说明
当try语句块中的代码出现异常时
   会创建并抛出一个 Error 对象(如catch(error)中error)
     对象中包含两个属性
        name:错误的类型
        message:对错误的描述信息

JS try catch finally语句

在 try catch 语句的后面
  添加一个 finally 语句块
    无论 try 语句块中的代码是否发生错误
     finally 语句中的代码都会执行
例:try catch finally
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>linux28.com -- JavaScript</title>
</head>
<body>
    <script>
        // 接收用户输入的参数
        var num = prompt("输入一个 0 到 100 的数字");
        // 获取当前时间
        var start = Date.now();
        try {
            if(num > 0 && num <= 100) {
                console.log(Math.pow(num, num)); // 指数幂的基
            } else {
                console.log("输入的值无效!");
            }
        } catch(e) {
            console.log(e.message);
        } finally {
            // 显示执行代码所用的时间
            console.log("代码执行花费了:" + (Date.now() - start) + "ms");
        }
    </script>
</body>
</html>

JS 抛出错误的方法

在JavaScript中,我们可以使用JS内置的异常信息,也可以抛出我们自定义的错误信息
 如:
  throw experession
  expression使用Error()内置函数抛出错误对象
例:抛出错误信息的示例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
</head>
<body>
    <script>
        function squareRoot(number) {
            // 如果数字为负数,则抛出错误
            if(number < 0) {
                throw new Error("抱歉,无法计算负数的平方根!");
            } else {
                console.log(Math.sqrt(number));
            }
        }
        try {
            squareRoot(16);
            squareRoot(625);
            squareRoot(-9);
            squareRoot(100);
            // 若抛出错误,则不会执行下面的行
            console.log("所有函数都执行成功。");
        } catch(e) {
            // 处理错误
            console.log(e.message);
        }
    </script>
</body>
</html>

JS内置错误类型

错误类型 备注
EvalError 使用 eval() 函数时发出错误,会抛出该错误
InternalError 由 JavaScript 引擎内部错误导致的异常,会抛出该错误
RangeError 范围错误,当使用了超出允许范围的数值时,会抛出该错误
SyntaxError 语法错误,当代码中存在任何语法错误时,会抛出该错误
TypeError 类型错误,当使用的值不是预期类型时,会抛出该错误,例如对数字调用字符串方法,对字符串调用数组方法等
URIError URI 错误,当使用 URI 相关函数但传入 URI 参数时,会抛出该错误
ReferenceError 参数错误,当尝试使用未定义的变量、函数、对象时,会抛出该错误