问题标签 [error-handling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
18901 浏览

logging - 何时记录错误是致命的?

在 log4j 和 log4net 等日志框架中,您可以记录各种级别的信息。大多数级别都有明显的意图(例如“调试”日志与“错误”的对比)。然而,我一直胆怯的一件事是将我的日志记录归类为“致命”。

什么类型的错误如此严重以至于它们应该被归类为致命错误?虽然这稍微取决于大小写,但在决定将异常记录为致命还是仅仅错误时,您使用的一些经验法则是什么?

0 投票
8 回答
685 浏览

c# - 如何处理 C# 中的多个错误?

我有一些读取 10 个注册表项的代码,有时值不存在,有时键不存在,有时值不是布尔值等等。我应该如何添加错误处理,目前它被放在一个很大的尝试中{} catch{} 但如果我读取的第二个值失败,那么在程序跳转到 catch{} 时不会读取其余值,我可以为每个值添加一个 try{} catch{} 但我猜有更好的方法. 你会怎么处理这个?我在问,因为我经常遇到类似的问题,我自己的解决方案是添加一个 try{} catch{}。

谢谢您的帮助。

0 投票
8 回答
160381 浏览

jsf - 如何在 JSF 中显示我的应用程序的错误?

在我的 JSF/Facelets 应用程序中,这是我的部分表单的简化版本:

我希望能够根据 continueButton() 方法中发生的事情将错误分配给特定的 h:message 标记。newPassword 和 newPassword2 需要显示不同的错误。验证器不会真正起作用,因为将传递结果(来自数据库)的方法在 continueButton() 方法中运行,并且运行两次的成本太高。

我不能使用 h:messages 标记,因为该页面有多个地方需要显示不同的错误消息。当我尝试这样做时,页面显示每条消息的重复项。

我试过这个作为最好的猜测,但没有运气:

我错过了什么?任何帮助,将不胜感激!

0 投票
3 回答
199 浏览

error-handling - 内部错误标记

从理论上讲,最终用户永远不会看到内部错误。但在实践中,理论和实践是不同的。所以问题是向最终用户展示什么。现在,对于完全非技术的用户,您希望尽可能少地显示(“单击此处提交错误报告”之类的东西),但对于更高级的用户,他们会想知道是否有解决方法,如果它已经知道了一段时间,等等。所以你想包括一些关于什么是错误的信息。

执行此操作的经典方法是使用文件名:行号的断言或具有相同的堆栈跟踪。现在这对开发人员来说是件好事,因为它把问题指向了他;但是它对用户来说有一些明显的缺点,特别是它非常神秘(例如不友好)并且代码更改会更改错误消息(谷歌搜索错误仅适用于此版本)。

我有一个程序,我正计划在我想解决这些问题的地方编写程序。我想要的是一种将唯一身份附加到每个断言的方法,这样编辑断言周围的代码不会改变它。(例如,如果我将它剪切/粘贴到另一个文件,我希望显示相同的信息)有什么想法吗?

我正在考虑的一种方法是对错误进行枚举,但是如何确保它们永远不会在多个地方使用呢?

(注意:对于这个问题,只关注由编码错误引起的错误。而不是像错误输入这样可能合法发生的事情。OTOH 这些错误可能会引起整个社区的兴趣。)

(注 2:有问题的程序将是在用户系统上运行的命令行应用程序。但同样,这只是我的情况。)

(注 3:目标语言是D我非常愿意深入研究元编程。非常欢迎其他语言的答案!)

(注 4:我明确不想使用实际的代码位置,而是使用某种符号名称来表示错误。这是因为如果代码以任何方式更改,代码位置也会发生变化。)

0 投票
4 回答
352 浏览

php - 从 PHP 的生产站点获取错误的最佳方法是什么?

对于大多数生产站点,您想尽快知道何时出现错误。我的问题是如何最好地获取这些信息。

通常,最好在电子邮件中获取错误,因为我不会每天坐下来查看错误日志,直到出现错误——这是不可能的,因为我在不同的服务器上有 20 个或更多的生产站点。这些错误可能是任何东西,包括未设置的变量、收到的无效数据或查询错误。

目前我已经按照PHPs 网站上的示例进行操作,在此处找到。因此,它会创建一个文本字符串以及一个 XML 文件,然后通过电子邮件发送该文件。我对此稍作修改,以保留所有错误,直到脚本结束,然后发送附有 XML 文件的电子邮件。(由于循环中的错误,我已经崩溃了几个发送超过 500 000 封电子邮件的邮件服务器。)大多数情况下,这可以完美运行。(我还创建了一个对象来完成所有的错误处理。)

当流程有大量数据时,就会出现问题wddx_serialize_value()。然后如果有多个错误,那么,它真的会使用大量内存,大多数时候超过脚本允许使用的内存。

因此,我gzcompress()在 XML 文件中添加了一个附加项,然后将其存储在变量中。这会有所帮助,但如果数据量非常大,它仍然会耗尽内存。(在最近的一个案例中,它想使用大约 2GB。)

我想知道还有哪些其他解决方案,或者您如何修改它以使其工作?

所以有几个要求:

  • 它必须能够向我发送的不仅仅是错误消息,并且不应该让我登录服务器来弄清楚发生了什么(这样我就可以检查何时移动并确定它是否是紧急事件)
  • 需要限制发送的电子邮件数量。最好的还是1。
  • 它需要像往常一样记录到文件中

编辑:我需要与错误相关的其他信息,而不仅仅是错误字符串。通常我发现几乎不可能重现错误,因为它是由用户输入引起的,除非我获得更多信息,否则我不知道。我已尽最大努力输入信息错误,但您永远不知道用户将如何使用系统或他们将输入什么垃圾数据。因此,我需要的不仅仅是错误文本/字符串。

编辑 2:无法将错误记录到数据库,因为据我所知,数据库可能不存在。需要几乎可以保证运行的东西。此外,这些网站并非都在一台服务器上,而且我经常无法访问服务器上的 cron(愚蠢的托管公司)。

0 投票
1 回答
325 浏览

php - PHP 中每个错误级别包含的内容

我基本上想知道每个错误级别中包含什么,就像在 PHP 中找到的那样。例如,未设置的变量或键落在哪里?或者解析落在哪里?我似乎无法在 PHP 网站或一般互联网上找到与此相关的任何文档。

编辑:我正在寻找什么错误导致什么错误级别/类型或其他方式的列表。

0 投票
5 回答
57705 浏览

vba - Access VBA:是否可以重置错误处理?

我在程序的第一部分使用

On Error GoTo start

假设在我的第二部分我再次使用

On Error Resume Next

第二个错误陷阱将不会被激活,因为第一个错误陷阱仍将处于活动状态。有什么方法可以在使用第一个错误处理程序后停用它?

执行最后一条语句后,我想忽略错误并转到下一张表,但错误处理似乎不起作用。

0 投票
7 回答
21633 浏览

php - 在生产服务器上抑制 php 错误的最佳方法

隐藏 php 错误以免在浏览器上显示的最佳方法是什么?

是否会使用以下内容:

任何最佳实践技巧也将不胜感激!

我正在记录错误,我只是想确保将 display_errors 值设置为 off(或 0)不会阻止记录错误。

0 投票
2 回答
613 浏览

error-handling - 为什么类中的错误只在运行时被捕获?

我有一个带有引发错误的方法的 VB6 类:

这个方法是从一个表单中调用的:

这在运行时工作正常,但在设计时错误处理不起作用。相反,VB6 IDE 显示其标准消息框,我可以从中进入调试模式或结束程序。

为什么会这样?我可以阻止它吗?

0 投票
16 回答
155933 浏览

java - 何时捕获 java.lang.Error?

在什么情况下应该抓住java.lang.Error一个应用程序?