先让俺这位新人帮各位有幸游览到我博客文章的叔叔阿姨哥哥姐姐们解释一下什么是错误处理?即:当程序发生错误时,保证程序不会异常中断的机制。

那么为什么程序中会有错误处理呢?像我们通常无论是玩手机或者玩游戏的时候,可能在运行过程中,程序默认只要碰到错误就会闪退,这时候的用户体验极差!而这个错误处理程序中的(err)会在错误发生时,自动获得一个错误对象,在发生错误时,自动创建,来避免这个错误。

接下来俺要说的不是错误处理,而是return在try{}catch{}finally{}中的用法。

首先,这是一个错误处理的基本流程:

try{

可能发生错误的代码段

}catch(err){

如果发生错误,才执行的错误处理代码

}finally{

无论是否发生异常,都会执行的代码段

}

其实finally可省略。

让我们来看第一种最简单的return用法:(程序即不报错,而且finally部分没有return):

这时候,看后台输出的值是否和你们心中想的值是一样的呢?

其实在错误程序里,表达式只要被读到,就会将变量替换为值,在该题中,try{}里面的n++无论无何都是被读到的,在接下来的几题中这部分也都会被读到,因为try{}是这条程序的必经之路,n此时都会被+1,而catch{}这部分会被直接跳过(没有错误不执行),再到finally{}。

再看第二种:(即在try{}中出现报错,而且finally部分没有return))

这时候的console.log(fun())返回的值是看return在哪家,n从try{}再到catch{},n变成了3,故第一个返回3,而无论无何,finally都是会被执行的!

接下来是第三种情况:(程序不报错,并且finally{}中有返回return存在的情况)

因为是不报错,所以程序直接跳过catch{}部分,这时候我们看到了两个return,这时候请注意:finally{}中的return会直接顶掉try{}中的return。

最后一种情况:(既报错,finally{}又有return的情况)

这种情况有两个变种,第一是在try{}中有报错,而且在最后finally{}中有return的返回值,

这种情况说复杂有点复杂,说简单有点简单,因为无论无何,finally有是要执行的,而且return也会顶掉上面的两个return。

综上所述:我们可以的得出return在错误处理中的一般性结论:

1. finally中没有return

如果不出错,首先会确定try中return的结果

**再执行finally中的代码

最后返回结果

finally中的代码不会影响返回的结果

如果出错,首先执行catch中的代码

确定catch中return的结果

**再执行finally中的代码

最后返回结果

finally中的代码不会影响返回的结果

2.finally中有return,finally中的return会覆盖之前的所有return

如果您坚持看完了俺写的文章,这是我第一次写博客,有些激动也有些生疏,第一次知道写博客是可以插入代码的,早知道我就不通过截图来完成了。另外,这仅仅是本人在上课做笔记时的一些看法,一时心血来潮想要跟广大JS爱好者分享,为这个代码社区增贴点活力!这也可能仅仅是在将来去公司面试时可能会遇到的情况,我们都知道错误处理其实也可以用if(){}else{}代替,而且执行效率也会更高!谢谢!下次我一定再接再厉!

关于错误处理程序中【return】的用法的更多相关文章

  1. php中return的用法实例分析

    本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量 ...

  2. JavaScript中return的用法详解

    JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 t ...

  3. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  4. JAVA中return的用法

    public class TestReturn { public static void main(String args[]) { TestReturn t = new TestReturn(); ...

  5. python中 return 的用法

    return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return. 要返回两个数值,写成一行即可: de ...

  6. python中return的用法

    def testReturn(x): if x > 10000: return print "test return!!" #这句话永远不会得到执行 elif x > ...

  7. js中return的用法

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  8. javascript中 IE事件处理程序中try catch用法

    本例是学习中笔记 望指正批评! <input id='b1' type='button' value='按钮'/> <script> window.onload=functio ...

  9. JavaScript中return的用法和this的用法详解

    JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对this和函数中的return的用法和意思理解的比较模糊,这里写一篇博客跟大家一起探讨一下return和this的 ...

随机推荐

  1. Splunk 会议回想: 大数据的关键是机器学习

    作者 Jonathan Allen ,译者 张晓鹏 Splunk的用户大会已经接近尾声.三天时间的会议里,共进行了160多个主题研讨.涵盖了从安全.运营到商业智能.甚至包含物联网,会议中一遍又一遍出现 ...

  2. FBX导入错误 :ImportFBX Errors:

    原地址:http://www.cnblogs.com/lopezycj/archive/2012/05/16/unity3d_tuchao.html Unity3D吐槽1--FBX导入 Unity3d ...

  3. SSH 基于ajax实现修改密码功能步骤梳理

    1. 为密码输入框进行输入校验,使用easyUI提供的easyui-validatebox <table cellpadding=3> <tr> <td>新密码:& ...

  4. linux文本命令

    1.find和grep find命令的作用是在目录中根据文件名搜索文件,grep命令的作用是在目录中根据文件内容搜索文件,find和grep的使用权限是所有用户. (1)find命令: find 列出 ...

  5. svn:database disk image is malformed问题解决方法

    今天一客户使用我们软件时突然停电,再次启动软件查询SQLite数据库报 The database disk image is malformed 错误. 百度一下基本上全部是http://www.cn ...

  6. JDBC的常用API

    一.Connection接口: 1.createStatement():创建数据库连接 2.prepareStatement(Stringsql):创建预处理语句 3.prepareCall(Stri ...

  7. Google I/O 2014 大会总结 Android开发新方向

    昨天晚上,Google I/O 2014大会召开,会上主要展示了下面几个部分的创新内容: Android L 操作系统 首先是界面,谷歌又一次设计了一套 UI 规范.并称之为"Materia ...

  8. 【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作

    这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn ...

  9. Android WebView与JavaScript交互实现Web App

    当我们去开发一个基于web的android app时,我们第一须要处理的就是与JavaScript的交互问题.Android须要做的事情就是开放某些特定的接口供web里的JavaScript调用,能够 ...

  10. css制作的61种图像

    HTML: <!DOCTYPE html> <html> <head> <title>css各种形状</title> <link re ...