PHP很少用到错误处理,因为框架帮了大忙,所以基本上没有主动接手过PHP的错误。PHP是偏后端的动态处理语言,和用户的关系不大,所以用户不会关心是否出现了报错。但是JavaScript就非常不同了,js的错误非常明显,稍微优点网络基础的人,都会迅速打开F12查看错误,最近再做一个需要大量js的项目,大量原生js,jq框架以及其他的插件混合再一起,所以难免会出现一些莫名其妙的问题。有时候看看满满的红色报错,就会想会有哪个用户会打开看到呢?经过查找资料(犀牛书)终于找到了JavaScript错误处理的机制,以即解决方案。


一、JavaScript错误(Error)与异常(Exception)的区别。

这里仔细区分Error与Exception的区别。在网上查找资料,找到的大部分都是Java方面的资料,对照JS起始也可以得出js的错误与异常。

Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。 Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

一言以蔽之:Error是代码在编译的时候就出现了错误,代码无法编译,比如语法错误,必须修正错误后才能重新编译。代码无法跳过错误。

Exception是代码再运行的时候,出现了错误,比如对象中某个属性不存在,或者是数据类型不对。代码可以继续执行,不过会在控制台中输出一段错误,提醒程序员。

那我们所讲的错误处理,基本上指的是第二种Exception的情况,用try catch 或者onerror来进行捕获。

二、 JavaScript错误是怎么输出到控制台的    ——    JavaScript的错误处理原理。

当抛出异常时,JavaScript解释器会立即停下当前正在执行的逻辑,并且跳到最近的异常处理程序(可以参考冒泡与变量作用域的相关概念。一句话简单理解:儿子犯了错误,找老子,一层一层往上找,直到找到能够承担错误的对象为止)。如果在所有的词法结构和调用栈上面没有找到错误处理程序。JavaScript就会把异常当做程序错误处理,并报告给用户。

三、使用  try catch  finally 处理程序

语法如下

try{
//这里放置可能会出错的代码
}
catch(e)
{
//代码出错后执行这里。
}
finally
{
//不管代码是否报错,都将执行这里。
}

三 、使用 window.onerror

window.onerror    =   dieError;
function dieError(msg,url,line){
var txt = "ERROR: "+msg+"\n";
txt += "URL: "+url+"\n";
txt += "LINE: "+line+"\n";
alert(txt);
return true;
}

个人感觉这个Window.onerror 用处不大,可能是因为出现较为早的原因吧,已经有了更好的处理方法替代。

JavaScript 的错误(Error)与异常(Exception)处理的更多相关文章

  1. java:错误Error,异常Excepition

    java中throw异常后代码还会继续执行吗 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(i ...

  2. Unity出现 error building player exception android (invocation failed)

    今天在编译Android的时候出现这个错误 error building player exception android (invocation failed) 百度谷歌之后,看到xuanyuson ...

  3. Python 3.3 try catch所有的错误Error,不包括Exception。关键在于 sys.exc_info()

    import os; import sys; #---------------------------------------------- def main( ) : try : a = 1 / 0 ...

  4. 异常 - 虚拟机初始化错误 - Error occurred during initialization of VM

    目录 1 环境配置信息 1.1 服务器配置信息 1.2 Tomcat启动参数 2 问题描述 3 问题解决 4 关于vm.overcommit_memory参数 4.1 vm.overcommit_me ...

  5. Atititjs javascript异常处理机制与java异常的转换.js exception process

    Atititjs javascript异常处理机制与java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw err ...

  6. Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7

    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception processVob7 1. 1. javascript异常处理机制 ...

  7. Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae

    Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...

  8. Kafka中错误:Unrecognized VM option ‘UseCompressedOops’ Error: Clould not create the Java Vritual Machine. Error: A fatal exception has occurres . Program will exit.

    错误的描述: 在kafka安装目录下,执行 $ bin/zookeeper-server-start.sh config/zookeeper.properties & Unrecognized ...

  9. 【异常】Maxwell异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <EOF> after : ""

    1 详细异常 Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at ...

随机推荐

  1. Android Studio单元测试入门

    Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...

  2. Android实现滑动刻度尺效果,选择身高体重和生日

    刻度尺效果虽然看起来很美,我个人认为很不实用,即使再不实用,也有用的,鉴于群里成员对我的苦苦哀求,我就分享一个他用不到的,横屏滑动刻度尺,因为他需要竖屏的,哈哈…… 最近群里的开发人员咨询怎样实现刻度 ...

  3. css+div 浮动分块

    前段时间学过几天html,只是怀着了解的态度,能够读懂别人的页面,能够扒现成就行,一直没有自己动手去实践过,其实也不是没有实践过,前段时间扒了一个网页,想按照自己的要求来改,可后果是越改越乱.今天心血 ...

  4. JS 页面加载触发事件 document.ready和window.onload的区别

    document.ready和onload的区别——JavaScript文档加载完成事件页面加载完成有两种事件: 一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件): 二是onlo ...

  5. 69 su -用户和工作组管理

    su su命令用户和工作组管理 su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码. 语法 su (选项) (参数) 选项 -c<指令>或--command= ...

  6. ScrollView中嵌套ListView显示

    想要ScrollView中嵌套显示ListView 需要自定义ListView 并重写onMeasure方法 重新计算  heightMeasureSpec的高度 int newHeight = Me ...

  7. Linux_Shell_Bash快捷键

      来自为知笔记(Wiz)

  8. 【hihoCoder 1036】Trie图

    看了一下简单的$Trie图$,调模板调啊调一连调了$2h$,最后发现$-'a'$打成$-'A'$了hhh,有种摔键盘的冲动. $Trie图$是$Trie树$上建立“前缀边”,不用再像在$Trie树$上 ...

  9. LightOJ 1341 唯一分解定理

    Aladdin and the Flying Carpet Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld &a ...

  10. poj3177 && poj3352 边双连通分量缩点

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12676   Accepted: 5368 ...