我已经浏览了这里关于这个主题的线程,但找不到我想要的东西。
我有一堆返回字符串的函数,我希望它们在输入错误时不返回字符串,我也不希望程序退出并且我不想在 try/中包装每个调用捕获。
function foo(num){
if(num > 5){
throw SomeException("Input too big")
}else{
return "bar"+num
}
}
我想记录一个错误,如“6 对于 foo 来说太大了”,而不是退出程序。但这将是一种 api,所以我不希望用户每次使用时都必须尝试/捕获 这些功能之一。这是一个 nodejs 脚本。
这行得通,但是很尴尬:
f = {
command : function(cmd,arg){
try {
console.log(q[cmd](arg));
}
catch (e) {
console.log("Error: " + e + " for " + cmd);
}
},
foo : function(str){
throw ("foo error");
},
foo2 : function(str){
throw ("foo2 error");
}
};
f.command("foo",2);
f.command("foo2",3);
最佳答案
[[Edit]] 这是一个 nodeJS 脚本。然后使 API 异步。我们不在 nodeJS 中进行同步操作。请保存事件循环。
您还可以将 API 重新设计为异步
function foo(num, cb){
if(num > 5){
cb(SomeException("Input too big"));
}else{
cb(null, "bar"+num);
}
}
foo(5, function(err, data) {
...
});
您可以引用公共(public)记录器实例。
MyLibrary.errorHandler = defaultErrorHandler() ||配置.errorHandler
然后让 defaultErrorHandler 成为
function(error) {
if (console && console.log) { console.log(error.message); }
$("#errordiv").text(error.message);
}
function foo(num){
if(num > 5){
MyLibrary.errorHandler(new Exception("blargh"));
}else{
return "bar"+num;
}
}
关于javascript - 我怎样才能包装这些函数以便它们的异常总是得到处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5588736/