编写可维护代码3:适当的抛出错误提示

版权声明:本文为微信公众号前端小二版权所有,如需转载可私信或关注微信公众号留言。 https://blog.csdn.net/qq_34832846/article/details/86298484

编写可维护的代码规则第3篇。

在js开发中,调试错误是一个比较头疼的事,又不像java的debug那么方便,定位错误往往不是那么容易,除非对代码熟悉无比,但即使是自己写的代码,功能一复杂,时间一长,再想快速定位问题,至少我现在是比较头疼的。此时,如果有一个比较友好的错误提示,那解决问题的效率将大大提高。

所以是时候学会在合适的地方抛出错误提示了。

js中抛出错误的方法有两种:throw new Error()抛出错误和try...catch..捕获错误。

先来看throw new Error()

function getDiv(el){
    if(el && el.getElementsByTagName){
        return el.getElementsByTagName('div');
    }else {
        throw new Error('getDiv(): Argument must be a Dom Element.')
    }
}
var div = document.getElementById('div1');
getDiv(null);   // Uncaught Error: getDiv(): Argument must be a Dom Element.

上例打印结果可知,明确给出了方法调用的错误提示。当getDiv()方法的参数传入不符合要求时,就会抛出错误提示。

Error类型在所有的javascrit实现中都是有效的,它的构造器只接收一个参数,即错误消息。当以这种方式抛出错误时,如果没有经try-catch语句来捕获的话,浏览器通常直接在控制台显示错误消息字符串。

通常在抛出的错误提示字符串中,应尽量写清错误目标和原因。这样做,当实际调试时,能明确告诉开发者问题的定位。

那什么时候需要抛出错误呢?

  • 修复一个自认为较复杂的错误后,及时增加相应的自定义错误提示。
  • 写代码时,思考不想要发生的程序时,针对这个不想要发生的事,抛出错误提示。

再来看下try-catch语句:

try {
    throw new Error("wrong msg.");
} catch(err) {
    console.log('catch msg: ' + err);
} finally {
    console.log('finally msg.');
}

try块中发生错误时,程序立即停止执行,并跳转到catch块中,并传入一个错误对象。至于后面的finally块,不管前面是否有错误发生,最终都会执行。

最后再来看看常见的错误类型。

  • Error:所有错误的基本类型,实际上引擎从不会抛出该类型的错误
  • EvalError:通过eval()函数执行代码发生错误时抛出
  • RangerError:一个数字超出它的边界时抛出,比较罕见
  • ReferenceError:期望的对象不存在时抛出,如试图在一个null对象引用上调用一个函数。
  • SyntaxError:给eval()函数传递的代码中有语法错误时抛出
  • TypeError:变量不是期望类型时抛出。如 new 10"prop" in true
  • URIError:给encodeURI()encodeURIComponent()decodeURIdecodeURIComponent()等函数传递格式非法的URI字符串时抛出

喜欢本文请扫下方二维码,关注微信公众号: 前端小二,查看更多我写的文章哦,多谢支持。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34832846/article/details/86298484