JavaScript 的错误(Error)与异常(Exception)处理
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)处理的更多相关文章
- java:错误Error,异常Excepition
java中throw异常后代码还会继续执行吗 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(i ...
- Unity出现 error building player exception android (invocation failed)
今天在编译Android的时候出现这个错误 error building player exception android (invocation failed) 百度谷歌之后,看到xuanyuson ...
- Python 3.3 try catch所有的错误Error,不包括Exception。关键在于 sys.exc_info()
import os; import sys; #---------------------------------------------- def main( ) : try : a = 1 / 0 ...
- 异常 - 虚拟机初始化错误 - Error occurred during initialization of VM
目录 1 环境配置信息 1.1 服务器配置信息 1.2 Tomcat启动参数 2 问题描述 3 问题解决 4 关于vm.overcommit_memory参数 4.1 vm.overcommit_me ...
- Atititjs javascript异常处理机制与java异常的转换.js exception process
Atititjs javascript异常处理机制与java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw err ...
- Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception processVob7 1. 1. javascript异常处理机制 ...
- Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae
Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...
- 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 ...
- 【异常】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 ...
随机推荐
- 分享:关于之前锤子手机刷MIUI之后,现在有事跌宕起伏的刷回了Smartisan OS!
序言: 距离上次把锤子手机刷成MIUI之后已经一个半月了,我是一个刷机党,一个半月足够让我适应一个系统,了解一个系统.刷机有风险,不过我愿意冒这个风险,因为兴趣,没别的.刷机之后,肯定是有问题的,没 ...
- [转]史上最全最强SpringMVC详细示例实战教程
原文:http://www.cnblogs.com/sunniest/p/4555801.html?utm_source=tuicool&utm_medium=referral SpringM ...
- java.lang.NullPointerException 空指针异常
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.heheh.daima/com.heheh.daima.H ...
- 【BZOJ 2809】【APIO 2012】dispatching
昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧. 用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没 ...
- java.io.FileNotFoundException: D:\xxx\yyy (拒绝访问。)问题
File file=new File(fileAllName); FileWriter fw=new FileWriter(file); 在Java的 FileWriter 方法时 系统抛出了异常 j ...
- lucene-查询query->PhraseQuery多关键字的搜索
用户在搜索引擎中进行搜索时,常常查找的并非是一个简单的单词,很有可能是几个不同的关键字.这些关键字之间要么是紧密相联,成为一个精确的短 语,要么是可能在这几个关键字之间还插有其他无关的关键字.此时,用 ...
- Spring Assert 断言
Assert(断言)的初步理解构思 Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查, ...
- Python中remove,del和pop的区别
以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...
- 自定义多列排序:C++/Java实现
前言: 有些时候,我们在编程中会遇到多列排序的需求.假如在execle,这事儿就太easy了.不过没办法,现在就需要你用Java或者C++实现这样一个功能! 比如将下表无序的数据通过重排之后按照以下规 ...
- js-JavaScript高级程序设计学习笔记3
第五章 引用类型 1.使用new操作符和Date构造函数创建日期对象. 2.创建特定日期有两个方法--Date.parse()和Date.UTC().后者小时数为0时显示时间是8点,应该是因为本地是东 ...