File tree Expand file tree Collapse file tree 1 file changed +25
-6
lines changed Expand file tree Collapse file tree 1 file changed +25
-6
lines changed Original file line number Diff line number Diff line change @@ -315,28 +315,29 @@ function cleansUp() {
315
315
316
316
cleansUp ()
317
317
// 完成清理工作
318
- // Error: 出错了……
318
+ // Uncaught Error: 出错了……
319
+ // at cleansUp (<anonymous>:3:11)
320
+ // at <anonymous>:10:1
319
321
```
320
322
321
- 上面代码中,由于没有` catch ` 语句块,所以错误没有捕获。执行 ` finally ` 代码块以后,程序就中断在错误抛出的地方 。
323
+ 上面代码中,由于没有` catch ` 语句块,一旦发生错误,代码就会中断执行。中断执行之前,会先执行 ` finally ` 代码块,然后再向用户提示报错信息 。
322
324
323
325
``` javascript
324
326
function idle (x ) {
325
327
try {
326
328
console .log (x);
327
329
return ' result' ;
328
330
} finally {
329
- console .log (" FINALLY" );
331
+ console .log (' FINALLY' );
330
332
}
331
333
}
332
334
333
335
idle (' hello' )
334
336
// hello
335
337
// FINALLY
336
- // "result"
337
338
```
338
339
339
- 上面代码说明 ,` try ` 代码块没有发生错误,而且里面还包括` return ` 语句,但是` finally ` 代码块依然会执行。注意,只有在其执行完毕后,才会显示 ` return ` 语句的值 。
340
+ 上面代码中 ,` try ` 代码块没有发生错误,而且里面还包括` return ` 语句,但是` finally ` 代码块依然会执行。而且,这个函数的返回值还是 ` result ` 。
340
341
341
342
下面的例子说明,` return ` 语句的执行是排在` finally ` 代码之前,只是等` finally ` 代码执行完毕后才返回。
342
343
@@ -356,7 +357,7 @@ count
356
357
// 1
357
358
```
358
359
359
- 上面代码说明,` return ` 语句的 ` count ` 的值,是在` finally ` 代码块运行之前就获取了。
360
+ 上面代码说明,` return ` 语句里面的 ` count ` 的值,是在` finally ` 代码块运行之前就获取了。
360
361
361
362
下面是` finally ` 代码块用法的典型场景。
362
363
@@ -431,6 +432,24 @@ try {
431
432
432
433
上面代码中,进入` catch ` 代码块之后,一遇到` throw ` 语句,就会去执行` finally ` 代码块,其中有` return false ` 语句,因此就直接返回了,不再会回去执行` catch ` 代码块剩下的部分了。
433
434
435
+ ``` javascript
436
+ try {
437
+ try {
438
+ cosnole .log (' Hello world!' ); // 报错
439
+ }
440
+ finally {
441
+ console .log (' Finally' );
442
+ }
443
+ console .log (' Will I run?' );
444
+ } catch (error) {
445
+ console .error (error .message );
446
+ }
447
+ // Finally
448
+ // cosnole is not defined
449
+ ```
450
+
451
+ 上面代码中,` try ` 里面还有一个` try ` 。内层的` try ` 报错,这时会执行内层的` finally ` 代码块,然后抛出错误,被外层的` catch ` 捕获。
452
+
434
453
## 参考连接
435
454
436
455
- Jani Hartikainen, [ JavaScript Errors and How to Fix Them] ( http://davidwalsh.name/fix-javascript-errors )
You can’t perform that action at this time.
0 commit comments