错误处理及自定义抛出错误
错误处理
1、try: 语句测试代码块的错误,一般把可能会出错的代码放到这里 2、catch: 只有try里面的代码块发生错误时,才会执行这里的代码,参数err记录着try里面代码的错误信息 3、finally: 无论有无异常里面代码都会执行
组合用法:try-catch, try-finally, try-catch-finally
执行顺序:
1.try里面的代码报错的时候,catch里面的代码才会执行, 2.finally里面的代码永远会执行 3.catch和finally里面,正常的代码会从上到下顺序执行 4.如果只是catch里面代码出错,则报catch里面的错误 5.如果catch和finally都出错则会报finally里面的错误
try-catch 语句
基本语法 try { //可能会导致错误的代码 } catch (error) { //在错误发生时怎么处理 }
如果try块中的任何代码发生了错误,就会立即退出代码执行过程,然后接着执行catch块,此时,catch块会接收到一个包含错误信息的对象,参数error记录着try里面代码的错误信息。 与在其他语言中不同的是,即使你不想使用这个错误对象,也要给它起个名字。这个对象中包含的实际信息会因浏览器而异,但共同的是有一个保存着错误信息的message属性。
注:在跨浏览器编程时,最好还是只使用message属性。
finally 语句
finally子句一经使用,其代码无论如何都会执行。换句话说,try语句块中的代码全部正常执行,finally子句会执行;如果因为出错而执行了catch语句块,finally子句照样还会执行。
只要代码中包含finally子句,则无论try或catch语句块中包含什么样的代码——甚至return语句,都不会阻止finally子句的执行。
注:只要代码中包含finally子句,那么无论try还是catch语句块中的return语句都将被忽略。因此,在使用finally子句之前,一定要非常清楚你想要代码怎么样。
自定义抛出错误
throw
用于随时抛出自定义错误,且必须给throw指定一个值。
这行代码抛出了一个通用错误,带有一条自定义错误信息。浏览器会像处理自己生成的错误一样,来处理这行代码抛出的错误。换句话说,浏览器会以常规方式报告这一错误,并且会显示这里的自定义错误类型。
嵌套使用
注:内部没有catch语句块,会执行最近的一个catch语句块。