欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javascript 处理异常语句-try catch throw finally

程序员文章站 2022-04-06 15:55:19
...

处理异常语句的作用

当引擎执行Javascript代码时会发生各种错误。包括语法错误,拼写错误,浏览器差异带来的错误,或者是在与用户交互中由于用户的错误输入而导致的错误等。处理异常语句可以帮助我们处理错误,生成自定义的错误信息,从而使看到错误信息提示的用户知道发生了什么。

语句/操作符 说明
try 测试错误
catch 处理错误
throw 随时抛出自定义错误
finally 无论是否触发异常都会执行该语句

try-catch语句

try {
            document.write(a);
        } catch (e) {
            alert("错误");
        }

try后面跟着错误语句,catch后面跟着处理错误的语句。见上图,try中的代码块书写了一个未声明的变量,系统检查到异常发生立即停止执行并转而执行catch代码块中的内容,同时catch会接收到一个包含错误信息的对象,保存到()里,为了使程序运行,我们必须给它一个名字,这里命名成e。代码执行结果出现的是显示“错误”的提示信息。

catch语句执行完毕,系统会认为错误已经处理完了,遇到下一行代码中的catch语句(假设有的话),也会直接忽略过去。

try-catch语句之后还可以加上finally子句,不管异常有没有出现,该语句都必将会被执行,见下图。

try {
            document.write(a);
        } catch (e) {
            alert("错误");
        } finally {
            document.write("欢迎使用");
        }

代码的执行顺序为:首先执行try语句,如果抛出异常则接着执行catch语句,如果没有异常catch语句中的代码块会被忽略。最后将执行finally语句。运行示例代码,弹出错误提示信息点确认后,屏幕会显示“欢迎使用”。

注意:

  • try语句中的错误不会形成机制记录或错误报告。
  • 当try或catch语句中有return语句时,try和catch里的return语句会被忽略,finally子句仍然正常执行。

throw操作符

throw的作用是抛出自定义的错误,它的值可以为任意类型,但是必须要给操作符指定一个值。只有在try-catch语句中才可以使用throw操作符,它出现在try-catch语句外时,代码在遇到到throw操作符出现的那一行时会停止执行。throw自定义的错误值会存储在catch语句里,我们可以通过调用它的名字来调用这个值。

通过使用try-catch语句和throw操作符,我们可以自定义面向用户的异常提示信息,见下面的例子

<p>请输入5-10之间的数字</p>
<input id="demo" type="text" />
<button type="button" onClick="myFunction()">测试输入</button>
<p id="message"></p>

function myFunction() {
            var message;
            var x;
            message = document.getElementById("message");
            message.innerHTML = "";
            x = document.getElementById("demo").value;
            x = Number(x); //把x转化成Number对象
            try {
                if (x == "") throw "请再次输入";
                if (isNaN(x)) throw "请输入数字";
                if (x < 5) throw "太小";
                if (x > 10) throw "太大";
            } catch (e) {
                message.innerHTML = "输入是" + e;
            }

执行代码时的错误类型

  • Error
    基类型,其他错误类型都继承自该类,所有类型共享了一组相同的属性。Error类型的错误很少,主要目的是供开发人员抛出自定义错误

  • EvalError
    在使用eval()函数而发生异常时抛出。

  • RangeError
    在数值超过相应范围时触发。

  • ReferenceError
    在找不到对象的情况下触发,比如说访问未声明的变量。

  • SyntaxError
    eval()函数内的语法错误。

  • TypeError
    执行变量操作时,变量的类型不符合要求。经常出现的错误。

  • URIError
    使用encode()URI或decodeURI(),而URI格式不正确时触发

使用throw操作符抛出错误

即使代码运行没有出错(throw上面的部分),我们也可以用throw操作符来创建一个错误,浏览器会像处理自己生成的错误一样来处理这行代码抛出的错误。

throw new SyntaxError("Error!");




此学习笔记的内容参考水墨墨心的博文,笔者把收集的知识点重新整理编排了一下,仅供学习交流之用。侵权必删。

相关标签: 学习笔记