21 错误处理与调试

3.6 抛出错误

抛出错误是调试代码的很好方式。如果错误消息足够具体,只要看一眼错误就可以确定原因。好的错误消息包含关于错误原因的确切信息,因此可以减少额外调试的工作量。比如下面的函数:

function divide(num1, num2) { 
 	return num1 / num2; 
} 

这个简单的函数执行两个数的除法,但如果任何一个参数不是数值,则返回 NaN。当 Web 应用程序意外返回 NaN 时,简单的计算可能就会出问题。此时,可以检查每个参数的类型是不是数值,然后再进行计算。来看下面的例子:

function divide(num1, num2) { 
 	if (typeof num1 != "number" || typeof num2 != "number"){ 
 		throw new Error("divide(): Both arguments must be numbers."); 
 	}
 	return num1 / num2; 
} 

这里,任何一个参数不是数值都会抛出错误。错误消息中包含函数名和错误的具体原因。当浏览器报告这个错误消息时,你立即就能根据它包含的信息定位到问题,包括问题的解决方案。相对于没那么具体的浏览器错误消息,这个错误消息显示更有价值。

在大型应用程序中,自定义错误通常使用 assert()函数抛出错误。这个函数接收一个应该为 true的条件,并在条件为 false 时抛出错误。下面是一个基本的 assert()函数:

function assert(condition, message) { 
 	if (!condition) { 
 		throw new Error(message); 
 	} 
}

这个 assert()函数可用于代替多个 if 语句,同时也是记录错误的好地方。下面的代码演示了如何使用它:

function divide(num1, num2) { 
 	assert(typeof num1 == "number" && typeof num2 == "number", 
 		   "divide(): Both arguments must be numbers."); 
 	return num1 / num2; 
} 

相比于之前的例子,使用 assert()函数可以减少抛出自定义错误所需的代码量,并且让代码更好理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值