javascript的错误处理
1 onerror事件,实例代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo2.aspx.cs" Inherits="WebApplication5.Demo2" %>
<script type="text/javascript">
function HandleError(sMessage,sURL,sLine) {
alert("出错了.\n"+"消息:"+sMessage+"\nURL:"+sURL+"\n出错行号:"+sLine);
return true;
}
window.onerror = HandleError;
</script>
<body onload="HandleLoad()"></body>
2 try ... catch... finally ,实例代码如下:
<script type="text/javascript">
try
{
//alert("ok");
windows.open("about:blank");
}
catch (exception) {
alert("an error processed");
}
finally {
alert("finally");
}
alert("ok");
</script>
注意:与JAVA/C#语言不同的是,不支持多重catch语句,但支持嵌套catch语句
实例代码如下:
<script type="text/javascript">
try
{
var a = document.getElementById("txtUser");
alert(a.value);
}
catch (ex) {
try
{
alert(ex.message);
}
catch (ex) {
alert(ex.message);
}
}
</script>
错误类型判断
方法1.通过name属性判断;
方法2:通过instanceof操作符
实例代码如下:
<script type="text/javascript">
try
{
var scriptStr="var a=0;var b=1;var c=a++b;alert(c)";
eval(scriptStr);
}
catch (ex) {
if (ex instanceof SyntaxError) {
alert("语法出错了");
}
}
</script>
抛出异常
ECMAScript还引入throw语句,用于抛出异常,语法如下:
throw error_object,
error_object可以是字符串,数字,布尔值或是实际的对象,如
throw "an error occurred";
throw 5009
throw true;
throw new Object();
throw new Error();
throw new Error("error");
throw new Error(10001,"error");
自定义异常:实例代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="js自定义异常.aspx.cs" Inherits="WebApplication5.js自定义异常" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
var EmailError = new Error(1001, "Email格式非法");
EmailError.name = "EmailFormatError";
EmailError.writeLog = function (funcname) {
var logstr = "error-code:" + this.number + "\n" + "error-message:" + this.message + "\n" + "error-type:" + this.name + "\n" + "error-func:" + funcname + "\n" + "error-time:" + (new Date()).toString();
alert(logstr);
}
function calc() {
var obj = document.getElementById("txtEmail");
try{
if(obj.value.indexOf("@")==-1)
{
throw EmailError;
}
else
{
alert("验证通过");
}
}
catch (ex) {
ex.writeLog("calc");
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="text" id="txtEmail" />
<input type="button" id="btnCalc" value="Calc" onclick="calc()" />
</div>
</form>
</body>
</html>
javascript的错误处理的更多相关文章
- JavaScript 的错误(Error)与异常(Exception)处理
PHP很少用到错误处理,因为框架帮了大忙,所以基本上没有主动接手过PHP的错误.PHP是偏后端的动态处理语言,和用户的关系不大,所以用户不会关心是否出现了报错.但是JavaScript就非常不同了,j ...
- Eclipse去除JavaScript验证错误
这篇文章主要是对Eclipse去除js(JavaScript)验证错误进行了介绍.在Eclipse中,js文件常常会报错.可以通过如下几个步骤解决 第一步: 去除eclipse的JS验证: 将wind ...
- 【转】Eclipse去除js(JavaScript)验证错误
这篇文章主要是对Eclipse去除js(JavaScript)验证错误进行了介绍.在Eclipse中,js文件常常会报错.可以通过如下几个步骤解决 第一步:去除eclipse的JS验证:将window ...
- kettle于javascript步骤错误处理
javascript步骤错误处理 假设你熟悉kettle误差特性转换.你可能想知道javascript步骤如何使用.骤用户界面机制是同样的,在javascript步骤右击,选择"定义错误处理 ...
- javascript常见错误
初学Javascript,每天总是被很小的问题折磨半天,今晚就有好几个小问题. 第一:全部使用双引号造成匹配错误 <input type="checkbox" onmouse ...
- JavaScript原生错误及检测
JavaScript代码在运行时可能产生的错误共有六种类型: 语法错误 类型错误 范围错误 eval错误 引用错误 URI错误 使用try-catch语句检测错误类型 try{ }catch(erro ...
- javascript中错误使用var造成undefined
在javascript中依据变量作用的范围不同分为局部变量和全局变量,直接定义的变量是全局变量,全局变量能够被全部的脚本訪问:在函数中定义的变量是局部变量,局部变量仅仅在函数内有效. 假设全局变量和局 ...
- JavaScript中错误正确处理方式,你用对了吗?
JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化.如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出.理论上 ...
- 我所犯的JavaScript引用错误
近期在w3cschool学习JavaScript和php--学完后,开始帮一哥们友情写网站.但是在使用ajax和Jquery的时候发现,我自己写的脚本不能运行.捣鼓了半天,没有发现任何语句错误.调试器 ...
随机推荐
- 牛顿方法(Newton-Raphson Method)
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 牛顿方法是一种求解等式的非常有效的数值分析方法. 1. 牛顿方法 假设\(x_0\)是等式的 ...
- 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...
- CGAL4.4+VC2008编译
一: CGAL是欧盟资助的基础几何库,很底层, 纯算法, 对于你的项目和科研都是不可多得的好东西, 废话一句, 国内做这样的东西, 估计会活不下去交不了差的. 不多介绍.送上 英文原址, 从软件角度, ...
- 测试GeoGebra博客
已知函数 \(\textit{f}(\textit{x})=2\textit{m}\ln\textit{x}-\textit{x}^2\), \(\textit{g}(\textit{x})=\tex ...
- 解决git中文乱码
和linux平台一样,在默认设置下,文件名称中包含中文的文件,在工作区状态输出.查看历史更改概要,以及在补丁文件中,文件名中的中文不能正确的显示,而是用若干八进制字符编码来显示,如下: git sta ...
- Python--matplotlib绘图可视化知识点整理
from:https://segmentfault.com/a/1190000005104723 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython无论你 ...
- mysql 语句case when
CREATE TABLE `lee` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `birthday` d ...
- Unity 摄像机Clear Flags和Culling Mask属性用途详解
原文地址:http://blog.csdn.net/tanmengwen/article/details/8798231 1.简述两个属性 1.1 Clear Flags 清除标记 每个相机在渲染时会 ...
- ruby -- 进阶学习(七)strong parameters之permitted.has_key
简单例子: params = ActionController::Parameters.new(user: { name: 'Francesco', age: 22, role: 'admin' }) ...
- Robot Framework自动化测试(一)---第一个脚本
最近工具中用Robot Framework框架来做自动化,所以,花时间学习了一下. =======所需环境=================== Python: https://www.python. ...