throw 写错了,你写的thorw
yy.value 的值是 你的文本域里输入的字符串内容
yy.value.length 是指 你输入的字符串内容的长度。
try{
}catch(....){
}finally{
}
先try捕获异常,执行catch里面的内容,最后执行finally里面的内容,当然也可以只写catch或者finally两个中的一个,但是必须写try语句块。
try跟catch搭配使用可以检测try里边的代码有没有抛出error,如果有error就会跳转到catch里执行catch里的程序
应该是慕课给的模板,自己填充的
catch是函数,在它内部的return后的语句确实不会执行,finally在catch外部,catch内部的return怎么会影响到finally呢?catch和finally并不在一个函数内啊,你不写finally随便写一些其他的函数都会执行,一样的道理
这样子
try..catch 或者说异常处理 在编程中是 非常非常非常 重要的 。
至于为什么重要,可以说搜一下这方面的文章,当然以后敲的多了自有体会。
说异常是自己输入的不太准确,应该说我们可以制造并抛出异常 就像 throw new Error("我是被制造出来的哦")。
Error 也是个对象,它负责对异常信息的包装,这里通过它的构造函数来创建一个异常。
throw 会将刚刚创建的异常抛出,如果上层还有try就会受到这个异常并对其处理,依次类推,如果最外层扔抛出异常,程序就会终止并把异常打印到控制台。
就像你之前敲代码时,会报各种错一样,js引擎也会对你的这种错进行异常处理。
之所以会有异常捕捉是为了程序的稳定性,不希望crash。
一种是可预见的异常,如手工抛出。
另一种就是程序执行时本身可能会出现问题,而问题的引入却是多方面的,此时无法用条件判断来控制时,一般会采用异常捕捉。
tyc catch 捕获并处理异常
finally语句的设定就是无论有无异常都会执行,这在某些场合很有用,例如关闭文件,释放资源。catch在有异常的时候捕获try语句抛出异常,如果当时能处理就处理,不能处理就输出或者提示异常信息。
输出oops就是在捕获异常阶段的啊... ex.message就是 执行顺序肯定是先执行完catch内的内容再走finally吧
红色区域内,try没有对应的catch,所以throw出去的Error("oops")抛了出去,在此之前不管是否抛异常都要先走finally,所以先输出"finally", 而后外层的try/catch捕获到这个Error("oops"),所以第二条输出"outer" "oops"
再见...