更新
<小时/> [重写问题,专注于我试图理解的问题。]
JavaScript中是否有一种方法可以抛出异常,通知发生问题的行号?与C#的调试器类似,如果在第50行引发错误,那么我将被带到第50行。
例如,根据MDN EvalError
代表eval()
的错误。所以,假设我有一个使用eval()
的函数。我想使用代表当前问题的特定错误EvalError
:
//As written here the error implies there is a problem on this line. See Firebug console window
var evalErra = new EvalError('required element missing from evaluation');
var stringFunc = "a=2;y=3;document.write(x*y);";
EvalString(stringFunc);
function EvalString(stringObject) {
//Some arbitrary check, for arguments sake let's say checking for 'x' makes this eval() valid.
if(stringObject.indexOf('x') !== -1) {
throw evalErra;
//throw 'required element missing from evaluation';//This way offers no line number
}
eval(stringFunc);//The problem really lies in the context of this function.
}
如果我认为这一切都错了,那么请告诉我应该如何解决这些问题。
答案 0 :(得分:1)
当你抛出错误时,当前代码的执行将停止,JS将继续执行树,直到它找到一个catch ()
来处理抛出的特定类型的错误,或者获取所有错误直到树的顶部,导致“未处理的异常”错误:你抛出一个错误,没有抓住它,现在有人的窗户坏了。
try {
if (true) {
throw 'yup'
}
} catch (e) { // catches all errors
... handle the error
}
答案 1 :(得分:1)
进行错误处理时,您需要执行以下操作
throw new Error("message");
然后,如果您处理此错误,请查看err.stack
(firefox / opera / chrome)或err.line
(Safari)或err.IE_Y_U_NO_SHOW_ME_ERROR_LINE_NUMBER
(IE)以查找行号。
如果您愿意,可以继承Error
。