我想知道在Javascript中实现异常处理的最佳和最简单的方法。我正在寻找一个“一点”的解决方案。我有很多功能,不想去实现try-catch。
我觉得window.onerror会是一个更好的方法,因为我只需要在一个地方实现它,并且在任何函数中发生任何异常,我将能够使用window.onerror来处理它。但是,这似乎只在IE中得到支持。是否有任何类似的方式可以使用,以便它支持所有主要的标准浏览器。
提前致谢。
答案 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
}
);
答案 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();