• js笔记——js异常处理


    异常捕获

    try...catch结构:

    try {
      //需要捕获的代码块
    } catch (e) {
      console.log(e.name + ": " + e.message);
      console.log(e.stack);
    }
    

    catch代码块捕获错误之后,程序不会中断,会按照正常流程继续执行下去。

    错误对象e有三个最基本的属性:

    name:错误名称
    message:错误提示信息
    stack:错误的堆栈(非标准属性,但是大多数平台支持)

    注意,我们还可以多次使用catch语句捕获不同类型的错误或者异常。

    try...catch...finally结构:
    try...catch结构允许在最后添加一个finally代码块,表示不管是否出现错误,都必需在最后运行的语句。

    try {
      //需要捕获的代码块
    } catch (e) {
      console.log(e.name + ": " + e.message);
      console.log(e.stack);
    }finally{
        //do something...
    }
    

    就算try语句里面有return语句,也要等到finally语句执行完毕再执行return语句。

    JavaScript的原生错误类型

    Error对象是最一般的错误类型,在它的基础上,JavaScript还定义了其他6种错误,也就是说,存在Error的6个派生对象。

    1、SyntaxError //解析代码时发生的语法错误
    2、ReferenceError //引用一个不存在的变量时发生的错误
    3、RangeError //当一个值超出有效范围时发生的错误
    4、TypeError //变量或参数不是预期类型时发生的错误
    5、URIError //URI相关函数的参数不正确时抛出的错误
    6、EvalError //eval函数没有被正确执行时,会抛出EvalError错误

    抛出异常(throw语句)

    throw语句的作用是中断程序执行,抛出一个意外或错误。它接受一个表达式作为参数,可以抛出各种值。

    throw new Error("出错了!");
    throw new RangeError("出错了,变量超出有效范围!");
    throw new TypeError("出错了,变量类型无效!");
    
    
    throw "Error!";// 抛出一个字符串
    
    throw 42;// 抛出一个数值
    
    throw true;// 抛出一个布尔值
    
    throw {toString: function() { return "Error!"; } };// 抛出一个对象
    

    JavaScript引擎一旦遇到throw语句,就会停止执行后面的语句,并将throw语句的参数值,返回给用户。

    自定义错误

    除了JavaScript内建的7种错误对象,还可以定义自己的错误对象。

    function UserError(message) {
       this.message = message || "默认信息";
       this.name = "UserError";
    }
    
    UserError.prototype = new Error();
    UserError.prototype.constructor = UserError;
    

    上面代码自定义一个错误对象UserError,让它继承Error对象。然后,就可以生成这种自定义的错误了。

    使用:

    throw new UserError("这是自定义的错误!");
    

    参考:
    错误处理机制 -- JavaScript 标准参考教程(alpha)
    http://javascript.ruanyifeng.com/grammar/error.html

  • 相关阅读:
    第十天python3 函数的销毁
    第九天python3 闭包
    第八天pyhton3 函数的返回值、作用域
    第七天python3 函数、参数及参数解构(二)
    音视频不同步排查方法
    第六天python3 函数、参数及参数解构(一)
    第五天python3 内建函数总结
    第四天python3 python解析式-生成器-迭代器

    [转载]基于Java反序列化
  • 原文地址:https://www.cnblogs.com/52fhy/p/5117430.html
Copyright © 2020-2023  润新知