在JavaScript中实现异常处理

时间:2011-01-11 06:28:24

标签: javascript

我想知道在Javascript中实现异常处理的最佳和最简单的方法。我正在寻找一个“一点”的解决方案。我有很多功能,不想去实现try-catch。

我觉得window.onerror会是一个更好的方法,因为我只需要在一个地方实现它,并且在任何函数中发生任何异常,我将能够使用window.onerror来处理它。但是,这似乎只在IE中得到支持。是否有任何类似的方式可以使用,以便它支持所有主要的标准浏览器。

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用try..catch块

JavaScript中的try..catch块非常类似于常规的C#try..catch块。可疑代码将被置于try块中,并且try块中发生的所有异常都将被捕获到catch块中。

window.onload = function()
{
    try
    {
        var x = 90;
        var value = x / y;
    }
    catch(err)
    {
        document.write(err.name + ": " + err.message + "<br/>");
    }
}

输出:

  

TypeError:'y'未定义

在catch中,您将获得包含异常类型和描述的对象。此外,您还可以使用与在C#中使用相同的方式使用finally块。

window.onload = function()
{
    try
    {
        var x = 90;
        var value = x / y;
    }
    catch(err)
    {
        document.write(err.name + ": " + err.message + "<br/>");
    }
    finally
    {
        alert('This is finally block');
    }
}

使用onerror事件

每次在文档中执行操作时出现任何错误,都会引发

onerror事件。这就像类似于ASP.NET中的Application_Error的异常处理。以下是示例代码:

window.onload = function()
{
    var x = 90;
    var value = x / y;
}

window.onerror = function(errorMeaage, fileName, lineNumber)
{
    document.write('Error: ' + errorMeaage);
}

使用jQuery解决方案

它类似于使用onerror但使用jQuery语法。语法是:

$(window).error(
    function(errorMeaage, fileName, lineNumber)
    {
        // handle error here
    }
);

摘自JavaScript Exception Handling Techniques

答案 1 :(得分:1)

如果只有少数函数互相调用,我会做这样的事情。

try{
 main();
}
catch(e){
 //error
}

其中 main()将是调用其他所有内容的函数; a la,脚本中的入口点。虽然,这并没有让你在下面的代码中有很大的灵活性。因此,考虑制作不同的“级别”函数,每次调用它们都包含在try ... catch块中,您可以在其中适当地处理它们。即

function a(){}
function b(){}

function main(){

 //call a, catch any errors
 try{
  a();
 }
 catch(e){}

 //call b, catch any errors
 try{
  b();
 }
 catch(e){}

 //and so on...

}

main();
相关问题