Javascript 捕获错误发生后停止

Javascript 捕获错误发生后停止,javascript,node.js,express,error-handling,throw,Javascript,Node.js,Express,Error Handling,Throw,我最近读到一篇文章,说在出现错误时编写抛出错误,以停止处理错误结果是一种很好的做法。我不确定它是否适用于使用node.js和express构建的web应用程序的服务器。我应该用抛出错误来处理所有.catch。抛出错误会导致我的应用程序崩溃吗?正确捕捉错误在每种语言中都是一个好习惯(当然,支持它)。这适用于您编写的每一个代码,无论它是服务器、客户机还是其他任何代码 捕获错误的关键在于避免应用程序在没有注意到的情况下崩溃,并适当处理崩溃原因,例如,通知用户(或您自己)出现问题,停止处理某些循环,停止

我最近读到一篇文章,说在出现错误时编写
抛出错误
,以停止处理错误结果是一种很好的做法。我不确定它是否适用于使用node.js和express构建的web应用程序的服务器。我应该用
抛出错误来处理所有
.catch
抛出错误会导致我的应用程序崩溃吗?

正确捕捉错误在每种语言中都是一个好习惯(当然,支持它)。这适用于您编写的每一个代码,无论它是服务器、客户机还是其他任何代码


捕获错误的关键在于避免应用程序在没有注意到的情况下崩溃,并适当处理崩溃原因,例如,通知用户(或您自己)出现问题,停止处理某些循环,停止整个应用程序或任何对您的情况有意义的操作。

正确捕获错误是每种语言的一个好习惯(当然,支持它)。这适用于您编写的每一个代码,无论它是服务器、客户机还是其他任何代码


捕获错误的关键在于避免应用程序在没有注意到的情况下崩溃,并适当处理崩溃原因,例如,通知用户(或您自己)出现问题,停止处理某些循环,停止整个应用程序或任何对您的情况有意义的操作。

catch块是处理错误的地方。换句话说,这是您可能从函数中触发另一个结果的地方。例如:

try {
  const result = await fetchSomeData();
  if(result !== null) {  
    return result;
  }else{
    throw "nothing was fetched"
  }
} catch(error) {
  console.log(error);
  const result = { error: "a custom error message", function: customCallBack };
  return result;
}

catch块是处理错误的地方。换句话说,这是您可能从函数中触发另一个结果的地方。例如:

try {
  const result = await fetchSomeData();
  if(result !== null) {  
    return result;
  }else{
    throw "nothing was fetched"
  }
} catch(error) {
  console.log(error);
  const result = { error: "a custom error message", function: customCallBack };
  return result;
}

你的问题有点太宽泛了。这里的答案是“视情况而定”。如果错误是致命的(意味着您的应用程序无法正常运行),例如,如果它没有正确的DB凭据,那么是的,可能它最好崩溃,并在应用程序持续崩溃和重新启动时设置监视/警报。但是,如果错误只是某些用户以您无法使用的格式发布了数据,那么最好抛出,这样您就可以获得一些日志,但您应该处理(捕获)该错误,而不是使其使整个应用程序崩溃。您的问题有点过于宽泛。这里的答案是“视情况而定”。如果错误是致命的(意味着您的应用程序无法正常运行),例如,如果它没有正确的DB凭据,那么是的,可能它最好崩溃,并在应用程序持续崩溃和重新启动时设置监视/警报。但是,如果错误只是某些用户以您无法使用的格式发布数据,那么抛出数据是很好的,这样您就可以获得一些日志,但是您应该处理(捕获)该错误,而不是使其使整个应用程序崩溃。在这种情况下,我是否需要在我的
捕获
中包含
抛出
,而不是仅在
控制台中。log
itNo,throw用于创建异常(错误),catch用于捕获(处理)错误。在本例中,fetch没有返回错误,它返回null,这可能会在应用程序的其他地方导致错误。因此,我不是等待它在其他地方引起错误,而是通过抛出一个错误来控制它,然后在catch块中通过记录错误来处理错误,然后创建应用程序可以处理的替代结果。在这种情况下,我是否需要在我的
catch
内设置
throw
而不仅仅是
控制台。log
itNo,throw用于创建异常(错误),catch用于捕获(处理)错误。在本例中,fetch没有返回错误,它返回null,这可能会在应用程序的其他地方导致错误。因此,我不是等待它在其他地方引起错误,而是通过抛出一个错误来控制它,然后在catch块中通过记录错误来处理错误,然后创建应用程序可以处理的替代结果。