异常处理
Posted xuanjian-91
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
错误处理
为什么要进行错误处理
如果不处理,程序运行就会终止
怎么捕获错误
try ... catch ... finally
错误类型
javascript有一个标准的Error对象表示错误,还有从Error派生的TypeError、ReferenceError等错误对象。
怎么处理error
我们在处理错误时,可以通过catch(e)捕获的变量e访问错误对象
使用变量e是一个习惯用法,也可以以其他变量名命名,如catch(ex)
抛出错误
程序也可以主动抛出一个错误,让执行流程直接跳转到catch块。抛出错误使用throw语句
实际上,JavaScript允许抛出任意对象,包括数字、字符串。但是,最好还是抛出一个Error对象。
错误传播
如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,如果外层函数也没有捕获,该错误会一直沿着函数调用链向上抛出,直到被JavaScript引擎捕获,代码终止执行。
同步错误处理(使用try..catch):
同步的特性是:从上到下执行代码
页面加载时从head开始加载的,js也是head中的js先执行
异步错误处理
在捕获的当时,回调函数并未执行,所以无法在调用时捕获
编写JavaScript代码时,我们要时刻牢记,JavaScript引擎是一个事件驱动的执行引擎,代码总是以单线程执行,而回调函数的执行需要等到下一个满足条件的事件出现后,才会被执行。
涉及到异步代码,无法在调用时捕获,因为调用函数执行时,回调函数未执行,回调函数执行时,调用函数早就执行完了,不再捕获异常了
异常可以是 JavaScript 字符串、数字、逻辑值或对象。
try{
var input =document.querySelector("#text1").value;
console.log("input="+input)
if(input=="") throw "值为空";
if(isNaN(input)) throw "不是数字";
if(input>10) throw "太大";
if(input<5) throw "太小";
}catch(err){
p.innerhtml="错误:"+err+"!";
}
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )
Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )