Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制
Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制
1. 语法错误(ERROR)和运行期错误(Exception) 1
1. 语法错误(ERROR)和运行期错误(Exception)
Javascript提供了两种特殊的错误处理方式
BOM包含一个onerror事件处理函数,这个window对象与图像对象上都有
同时ECMAScript定义了另一个从java中借鉴过来的try…catch结构来处理异常
错误报告、错误处理以及代码调试,一直被认为是JavaScript的弱项,直到ECMAScript3和ECMAScript4的退出才得到改善。在ECMAScript中将JS的错误分为语法错误(ERROR)和运行期错误(Exception)。
错误分类
1、语法错误:也称解析错误,发生在传统语言的编译时,在JavaScript中发生 在解释时。这些错误是由代码中的意外字符直接引起的,然后就不能直接编译/解释。发生语法错误时,就不能继续执行代码。在JavaScript中,只有在 同一个线程中的代码会受语法错误的影响。在其他线程中的代码和其他外部引用的文件中的代码,如果不依赖于包含错误的代码,则可以继续执行。
2、运行时错误:也称为异常(exception,在编译期/解释器后)。此时,问题并不出在代码的语法上,而是,尝试完成的一个操作,在某些情况下是非法的。异常只影响发生的线程,其他JavaScript线程即可继续正常的执行。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 错误类型判断 二种方法:
方法1:通过name属性判断
方法2: 通过instanceof操作符
如:try{ var scriptStr =" var a=0;var b=1;var c=a++b;alert(c)";
eval(scriptStr);
}catch(ex)
{ if (ex instanceof SyntaxError)
{ alert("语法出错了"); } }
3. 我们常接触到的异常包括:
EvalError:用eval()函数发生异常时抛出
RangeError:数值超出相应范围时触发
ReferenceError:找不到对象的情况下
SyntaxError:把语法错误的JavaScript字符串传入eval()函数
TypeError:变量中保存着意外的类型时,或访问不存在的方法时
URIError:使用encodeURI()或decodeURI(),而URI格式不正确时
4. ------代码
function ValidException(msgx)
{
//this.type=""
this.type="ValidException";
this.msg=msgx;
}
function validOafa(isAlert)
{
$(".ati-validatebox").each(function(){
// if($(this).attr("height")>height)
var ops=( $(this).attr("data-options") );
var ops_json=eval( "({"+ops+"})" );
if(ops_json.required)
{
if( $(this).val()=="")
{
if(isAlert)
alert(ops_json.missingMessage);
throw new ValidException(ops_json.missingMessage);
}
}
});
}
try{
validOafa(true);
alert("other ...");
}catch(e){
// alert(e instanceof ValidException);
if (e instanceof ValidException)
{
alert(e.msg);
throw "stop process...";
}
}
5. 参考
javascript异常处理 - 许乐 - 博客园.htm
JavaScript高级程序设计 阅读笔记(二十) js错误处理_javascript技巧_脚本之家.htm
Javascript的异常处理介绍 - 深蓝冰封 - ITeye技术网站.htm
相关文章
- Android-java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
- JAVA Eclipse如何重新设置工作空间workspace
- Java实现 LeetCode 830 较大分组的位置(暴力模拟)
- Java实现 LeetCode 129 求根到叶子节点数字之和
- Java实现 LeetCode 18 四数之和
- Java实现 蓝桥杯VIP 算法提高 5-3日历
- java与C++的区别
- java数据库编程:JDBC操作及数据库
- 【Java开发基础】生成两个正数之间的随机数
- java 和 javascript中空值和字符串的比较
- java 15: jcmd的常用命令
- ABAP,Java,JavaScript里的字符串模板String Template
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
- Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
- java如何将String转换为enum
- 【华为OD机试 2023】 分奖金(C++ Java JavaScript Python)
- 【华为OD机试 2023】 预订酒店(C++ Java JavaScript Python)
- 【华为OD机试 2023】士兵过河(C++ Java JavaScript Python)
- 【华为OD机试 2023】 对称美学(C++ Java JavaScript Python)
- 【华为OD机试 2023】Excel单元格数值统计(C++ Java JavaScript Python)
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式