返回JavaScript中的行号

返回JavaScript中的行号,javascript,Javascript,我想在我的代码中返回行号,例如我在编写console.log'SomeCode'时想要的行号;在第33行中返回33 我如何在JavaScript中做到这一点 我在谷歌上搜索了一下,发现了以下代码: try{ throw new Error('Buck stops here') }catch(e){ console.log( e.line) } 但是我不想在代码中使用任何try-catch。您需要捕获代码中所有未处理的异常。通过这样做,您将不需要加入try-catch构造 window.

我想在我的代码中返回行号,例如我在编写console.log'SomeCode'时想要的行号;在第33行中返回33

我如何在JavaScript中做到这一点

我在谷歌上搜索了一下,发现了以下代码:

try{
  throw new Error('Buck stops here')
}catch(e){
  console.log( e.line)
}

但是我不想在代码中使用任何try-catch。

您需要捕获代码中所有未处理的异常。通过这样做,您将不需要加入try-catch构造

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
    console.log("Error occured: " + errorMsg + " on line " + lineNumber);//or any message
    return false;
}

跳过try/catch,只使用错误对象:

var x = new Error("I want the line number");
console.log(x.lineNumber);
有关更多信息,请访问


还要注意的是,像lineNumebr这样的属性是在特定的解释器中实现的,并不是所有浏览器都通用的。

从堆栈跟踪中找到它是唯一的方法。Try-catch是一个有效的构造,为什么不使用它?@Emissary我认为其目的是避免在他的示例中使用Try/catch,在这种情况下,Try/catch是多余的,因为您可以将错误对象分配给一个变量,而不是抛出和捕获。这感觉像是一种代码味道。它可以很容易地掩盖您可能期望抛出的合法运行时错误。同意。如果需要,可以在此块中抛出错误。这取决于你想要达到的目标。虽然这种技巧在某些情况下可能很有用,但对于所问的问题,这是一个糟糕的建议。我重新阅读了这个问题,现在我发现我没有正确理解它;当我尝试这个时,我在控制台中得到了定义,我认为lineNumber属性在Firefox和Opera上是有效的,而不是Google Chrome,因为我使用的是Google Chrome如果它在您的环境中不可用,您可能需要自己对x.stack进行正则表达式解析才能找到它。可能有一些片段可以做到这一点。