javascript错误处理(1)

javascript错误处理(1)

关键字: error exception
javascript 提供了两种特别的错误处理的方式.
BOM包含一个onerror事件处理函数,这在window和img对象上都有,同时,ECMAScript定义了另外一个从Java中借过来的try...catch...finally..结构,来处理异常.
1. onerror事件处理函数

onerror事件是在window对象触发的.

eg:

Html代码 复制代码
  1. <script type='text/javascrpt'>  
  2. window.onerror=function(){          
  3.      alert('An error occurred');   
  4.      return true;    //prevent the web browser's default action.   
  5. }   
  6. window.onload=function(){      
  7.      nonExistentFunction();   
  8. }   
  9. </script>  
<script type='text/javascrpt'>
window.οnerrοr=function(){	     
     alert('An error occurred');
     return true;    //prevent the web browser's default action.
}
window.οnlοad=function(){	
     nonExistentFunction();
}
</script>

 

 

onerror事件处理函数提供了三个参数

  1. 错误信息----对于给定错误,浏览器会显示同样的信息
  2. URL----在哪个文件中发生了错误
  3. 行号----给定URL中发生错误的行号

eg:

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html>  
  4.     <head>  
  5.         <title>js error details</title>  
  6.         <link rel=stylesheet href="" />  
  7.         <style type="text/css">  
  8.             <!--  
  9.             -->  
  10.         </style>  
  11.     <script type="text/javascript">  
  12.         window.onerror=function(sMessage, sUrl, sLine){   
  13.             alert("An error occurred: /n"+sMessage+"/nURL: "+sUrl+"/nLine Number: "+sLine);   
  14.             return true;   
  15.         }   
  16.     </script>  
  17.     </head>  
  18.     <body onload='nonExsitentFunction();'>  
  19.     </body>  
  20. </html>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>js error details</title>
		<link rel=stylesheet href="" />
		<style type="text/css">
			<!--
			-->
		</style>
    <script type="text/javascript">
    	window.οnerrοr=function(sMessage, sUrl, sLine){
    		alert("An error occurred: /n"+sMessage+"/nURL: "+sUrl+"/nLine Number: "+sLine);
    		return true;
    	}
    </script>
	</head>
	<body οnlοad='nonExsitentFunction();'>
	</body>
</html>

图象载入错误.

eg:

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html>  
  4.     <head>  
  5.         <title>img load error</title>  
  6.         <link rel=stylesheet href="" />  
  7.         <style type="text/css">  
  8.             <!--  
  9.             -->  
  10.         </style>  
  11.     <script type="text/javascript">  
  12.         function handleLoad(){   
  13.             document.images[0].onerror = function(){   
  14.                 alert("An error occurred loading the image.");   
  15.             }   
  16.             document.images[0].src='blue.gif';   
  17.         }   
  18.            
  19.     </script>  
  20.     </head>  
  21.     <body onload='handleLoad();'>  
  22.         <p>The image below attempts to load a file that doesn't exist.</p>  
  23.         <img/>  
  24.     </body>  
  25. </html>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>img load error</title>
		<link rel=stylesheet href="" />
		<style type="text/css">
			<!--
			-->
		</style>
    <script type="text/javascript">
    	function handleLoad(){
    		document.images[0].onerror = function(){
    			alert("An error occurred loading the image.");
    		}
    		document.images[0].src='blue.gif';
    	}
    	
    </script>
	</head>
	<body οnlοad='handleLoad();'>
		<p>The image below attempts to load a file that doesn't exist.</p>
		<img/>
	</body>
</html>

 

注意: 与window对象的onerror事件处理函数不同, image的onerror事件处理函数没有任何关于额外信息的参数.

 

处理语法错误.

onerror不仅可以处理exception,它还能处理语法错误,也只有它才能处理.

Attention: 事件处理函数必须是页面中的第一个出现的代码:

eg:

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html>  
  4.     <head>  
  5.         <title>js error details</title>  
  6.         <link rel=stylesheet href="" />  
  7.         <style type="text/css">  
  8.             <!--  
  9.             -->  
  10.         </style>  
  11.     <script type="text/javascript">  
  12.         window.onerror=function(sMessage, sUrl, sLine){   
  13.             alert("An error occurred: /n"+sMessage+"/nURL: "+sUrl+"/nLine Number: "+sLine);   
  14.             return true;   
  15.         }   
  16.            
  17.         alert('syntax error.';    
  18.     </script>  
  19.     </head>  
  20.     <body>  
  21.     </body>  
  22. </html>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>js error details</title>
		<link rel=stylesheet href="" />
		<style type="text/css">
			<!--
			-->
		</style>
    <script type="text/javascript">
    	window.οnerrοr=function(sMessage, sUrl, sLine){
    		alert("An error occurred: /n"+sMessage+"/nURL: "+sUrl+"/nLine Number: "+sLine);
    		return true;
    	}
    	
    	alert('syntax error.'; 
    </script>
	</head>
	<body>
	</body>
</html>

使用onerror事件处理函数的主要问题是,它是BOM的一部分,所以没有任何标准能控制它的行为.因此,不同的web browser使用这个事件处理函数处理错误方式有明显的不同. 例如, 在IE中发生error事件时, 正常代码会继续执行: 所有的变量和数据都保留下来, 并通过onerror事件处理函数访问.然后在Mozilla中,正常的代码执行都会结束,同时所有错误发生之前的变量和数据都被销毁.

Safari和Konqueror 不支持window对象上的确onerror事件处理函数,但是他们支持图象上的onerror事件处理函数.

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值