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的错误处理的更多相关文章

  1. JavaScript 的错误(Error)与异常(Exception)处理

    PHP很少用到错误处理,因为框架帮了大忙,所以基本上没有主动接手过PHP的错误.PHP是偏后端的动态处理语言,和用户的关系不大,所以用户不会关心是否出现了报错.但是JavaScript就非常不同了,j ...

  2. Eclipse去除JavaScript验证错误

    这篇文章主要是对Eclipse去除js(JavaScript)验证错误进行了介绍.在Eclipse中,js文件常常会报错.可以通过如下几个步骤解决 第一步: 去除eclipse的JS验证: 将wind ...

  3. 【转】Eclipse去除js(JavaScript)验证错误

    这篇文章主要是对Eclipse去除js(JavaScript)验证错误进行了介绍.在Eclipse中,js文件常常会报错.可以通过如下几个步骤解决 第一步:去除eclipse的JS验证:将window ...

  4. kettle于javascript步骤错误处理

    javascript步骤错误处理 假设你熟悉kettle误差特性转换.你可能想知道javascript步骤如何使用.骤用户界面机制是同样的,在javascript步骤右击,选择"定义错误处理 ...

  5. javascript常见错误

    初学Javascript,每天总是被很小的问题折磨半天,今晚就有好几个小问题. 第一:全部使用双引号造成匹配错误 <input type="checkbox" onmouse ...

  6. JavaScript原生错误及检测

    JavaScript代码在运行时可能产生的错误共有六种类型: 语法错误 类型错误 范围错误 eval错误 引用错误 URI错误 使用try-catch语句检测错误类型 try{ }catch(erro ...

  7. javascript中错误使用var造成undefined

    在javascript中依据变量作用的范围不同分为局部变量和全局变量,直接定义的变量是全局变量,全局变量能够被全部的脚本訪问:在函数中定义的变量是局部变量,局部变量仅仅在函数内有效. 假设全局变量和局 ...

  8. JavaScript中错误正确处理方式,你用对了吗?

    JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化.如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出.理论上 ...

  9. 我所犯的JavaScript引用错误

    近期在w3cschool学习JavaScript和php--学完后,开始帮一哥们友情写网站.但是在使用ajax和Jquery的时候发现,我自己写的脚本不能运行.捣鼓了半天,没有发现任何语句错误.调试器 ...

随机推荐

  1. 全国DNS服务器IP地址【电信、网通、铁通】

    免费DNS地址: 114DNS:114.114.114.114(推荐国内使用) Google DNS:8.8.8.8(国外) ************************************* ...

  2. js常见怪异

    1.隐式转换为布尔:"truthy"和"falsy" 当 JavaScript 需要一个布尔值时(例如:if 语句),任何值都可以被使用. 最终这些值将被转换为 ...

  3. Turtle Online:致力于打造超接地气的PC前端架构,组件+API,快速搭建前端开发

    架构创作初衷 每当新开一个项目时,都会绞尽脑汁去考虑采用哪种框架:requirejs/seajs.jquery/zepto.backbone.easeUI/Bootstrap/AngularJS……, ...

  4. CSS布局:Float布局过程与老生常谈的三栏布局

    原文见博客主站,欢迎大家去评论. 使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloa ...

  5. 有了Hadoop MapReduce, 为什么还要Spark?

    a. 由于MapReduce的shuffle过程需写磁盘,比较影响性能:而Spark利用RDD技术,计算在内存中进行. b. MapReduce计算框架(API)比较局限, 而Spark则是具备灵活性 ...

  6. ServiceStack.Redis 中关系操作的局限与bug

    redis是文档型的,nosql中难处理的是关系. 比如人可以发博客,博客可以有分类.按照传统sql中,用户表和分类表都是主表,博客表是从表,有用户的外键和分类的外键 如果使用文档型的思考方式. 为用 ...

  7. GitBook – 使用 GitHub 和 Markdown 制作书籍

    GitBook 是一个命令行工具(也是 Node.js 库),让你能够使用 GitHub/Git 和 Markdown 构建出美丽的编程书籍,可以包含互动的练习.GitBook 支持使用多种语言构建书 ...

  8. [linux]记录如何设置一个新的vps

    背景 我正在做一个小项目,做好了打算上线,所有需要买个服务器,看了一圈,发现还是卖个vps合算.买了之后,进行了一些列的设置,这里记录一下,以便后面查看. 系统: ubuntu 内存:1G 一.更改时 ...

  9. Android上的事件流操作数据库

    最近在浏览某篇有关事件流的文章时,里面提到了数据的流处理,兴趣来了,就想看看能否在Android端实现一个. 根据文章的介绍,将每次数据的变更事件,像是插入,删除或者更新等,记为一个不可变的事件,让数 ...

  10. SQL Server 多条记录的某个字段拼接

    USE [FM_Dev] GO /****** 对象: UserDefinedFunction [dbo].[GetClassNameByStudentCode] 脚本日期: 05/23/2014 1 ...