示例一、 try执行正确的时候
结果输出:
try执行错误的时候,(把toLocaleString的e去除)
结果输出:
try内放一条可能产生错误的语句。当try语句开始执行并抛出错误时,catch才执行内部的语句和对应的try内的错误信息message。何时执行finally语句,只有当try语句和catch语句执行之后,才执行finally语句,不论try抛出异常或者catch捕获都会执行finally语句。
示例二、
结果输出:
结果输出:
finally输出不受try和catch的限制和约束
示例三、
结果输出: 空
示例四、
结果输出:
结果输出:
当我们在try可能引发错误的代码块内嵌套try catch,通过嵌套的代码块try内扔一条可能出现错误的语句 throw new Error(‘error throw start’);,紧接着嵌套的try将错误传递给嵌套的catch处理,最终通过嵌套的finally运行过后,我们看到最后一条结果,其实嵌套的catch捕获的错误信息扔给最外层catch捕获的 也就是说:任何给定的异常只会被离它最近的封闭catch块捕获一次。 当然,在“内部”块抛出的任何新异常(因为catch块里的代码也可以抛出异常),都将会被“外部”块所捕获
description: 错误描述 (仅IE可用). fileName: 出错的文件名 (仅Mozilla可用). lineNumber: 出错的行数 (仅Mozilla可用). message: 错误信息 (在IE下同description) name: 错误类型. number: 错误代码 (仅IE可用). stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
补充于2018-08-02:
1.return问题
注意:当包含finally语句时,无论try还是catch语句中的return都将被忽略。
下面的代码结果会返回3,而不是1。
function ex(){ try{ return 1; }catch(e){ return 2; }finally{ return 3; } }2.自定义错误类型
如果想自定义错误类型区分于其他浏览器错误,还可以利用原型链通过继承Error来创建自定义错误类型。
需要做的是,为创建的错误类型指定name和message属性。
function customError(message){ this.name = 'MyError'; this.message = message; } customError.prototype = new Error(); throw new customError('error message');结果浏览器抛出错误: Uncaught MyError: error message