问题标签 [custom-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.
php - 参考 - 这个错误在 PHP 中是什么意思?
这是什么?
这是一些关于您在编写 PHP 时可能遇到的警告、错误和通知的答案,但不知道如何修复它们。这也是一个社区 Wiki,因此邀请每个人参与添加和维护此列表。
为什么是这样?
Stack Overflow 上经常会出现诸如“已发送标头”或“调用非对象成员”之类的问题。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向 OP 显示在其特定情况下要更改哪一行。这些答案不会为站点增加任何价值,因为它们仅适用于 OP 的特定代码。其他具有相同错误的用户无法轻松地从中读取解决方案,因为他们过于本地化。这很可悲,因为一旦您了解了根本原因,修复错误就变得微不足道了。因此,此列表试图以通用的方式解释解决方案。
我应该在这里做什么?
如果您的问题已被标记为与此问题重复,请在下面找到您的错误消息并将修复程序应用于您的代码。答案通常包含进一步调查的链接,以防仅从一般答案中不清楚。
如果您想做出贡献,请添加您“最喜欢的”错误消息、警告或通知、每个答案一个、简短描述其含义(即使它只是在其手册页中突出显示术语)、可能的解决方案或调试方法以及有价值的现有问答列表。此外,请随时改进任何现有答案。
名单
- 什么也看不见。该页面是空的和白色的。(也称为白页/死亡屏幕)
- 代码不运行/输出了我的 PHP 代码的部分内容
- 警告:无法修改标头信息 - 标头已发送
- 警告:mysql_fetch_array() 期望参数 1 是资源,给定的布尔值又名
警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源 - 警告:[function]期望参数 1 是资源,给定的布尔值
- 警告:[功能]:无法打开流:[原因]
- 警告:open_basedir 限制生效
- 警告:除以零
- 警告:非法字符串偏移 'XXX'
- 警告:count():参数必须是数组或实现 Countable 的对象
- 解析错误:语法错误,意外的 '['
- 解析错误:语法错误,意外的 T_XXX
- 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE
- 解析错误:语法错误,意外的 T_PAAMAYIM_NEKUDOTAYIM
- 解析错误:语法错误,意外的“require_once”(T_REQUIRE_ONCE),期望函数(T_FUNCTION)
- 解析错误:语法错误,意外的 T_VARIABLE
- 致命错误:已用尽允许的 XXX 字节内存大小(尝试分配 XXX 字节)
- 致命错误:在非对象或 null 上调用成员函数 ...
- 致命错误:调用未定义函数 XXX
- 致命错误:无法重新声明 XXX
- 致命错误:无法在写入上下文中使用函数返回值
- 致命错误:AAA::BBB() 的声明必须与 CCC::BBB()的声明兼容'
- AAA::BBB() 的返回类型应该与 CCC::BBB() 兼容,或者应该使用 #[\ReturnTypeWillChange] 属性
- 致命错误:不在对象上下文中使用 $this
- 致命错误:类 Closure 的对象无法转换为字符串
- 致命错误:未定义的类常量
- 致命错误:未捕获的类型错误:参数 #n 必须是 x 类型,给定 y
- 注意:数组到字符串的转换
- 注意:试图获取非对象错误的属性
- 注意:未定义的变量或属性
- “注意:未定义的索引”或“警告:未定义的数组键”
- 注意:未定义的偏移量 XXX [参考]
- 注意:未初始化的字符串偏移量:XXX
- 注意:使用未定义的常量 XXX - 假定为 'XXX'
- MySQL:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在...附近使用...行...
- 严格标准:非静态方法[<class>::<method>]不应被静态调用
- 警告:函数期望参数 X 为布尔值/字符串/整数
- HTTP 错误 500 - 内部服务器错误
- 不推荐使用:不推荐使用带有花括号的数组和字符串偏移访问语法
另见:
c# - 在 Web 服务中为 InfoPath 客户端显示自定义错误消息
我有一个将记录提交到数据库的自定义 Web 服务,
提交给表的 JF_ID 值引用主/源表的 JF_ID 值。因此,如果用户尝试提交不存在的 JF_ID,则会捕获 sql 异常,说“违反参照完整性等......
这是我的网络服务的样子:
}
用户可能有许多故障数据条目。例如,用户输入字符串而不是整数值,如果他尝试提交不存在的 JF_ID 的条目,则违反参照完整性。
如何确保在捕获此类 SQL 异常时,从我的 Web 服务传递用户友好的自定义错误消息(例如输入的 ID 不存在。数据插入失败!)。最后,我想将此友好的错误消息传递给 InfoPath 客户端。
非常感谢。
asp.net - 如何在运行时更改 web.config 设置的 customError 配置?
我目前在我的 web.config 中有一个 customError 节点,如下所示:
在运行时,我希望能够更改应用程序行为,就像将属性 redirectMode 设置为 ResponseRedirect 而不是 ResponseRewrite 一样。我必须能够在不更改 web.config 文件的情况下执行此操作。这可能吗,如果可以,怎么办?预先感谢您的任何帮助。
javascript - 扩展原生 JavaScript Error 构造函数
我尝试通过扩展Error构造函数的原型来扩展JavaScript错误属性:
然后我测试日志功能:
结果是错误对象只显示一些属性(例如在 FirefoxfileName
和lineNumber
上columnNumber
),就像它没有被扩展一样。
但最奇怪的是,for...in
循环似乎无法遍历所有的错误对象属性:试图提醒标准属性error.message
通常会返回一条消息。
所以我的测试结果是:
- Error 构造函数不能像其他本地构造函数那样通过其原型进行扩展;
for...in
循环无法遍历错误对象的属性。
我对吗?
是否有一些有趣的证据/资源,您可以建议了解更多信息?
c++ - 带有默认 sax 处理程序和自定义错误处理程序的 libxml2
我想通过以下方式在 C++ 程序中使用简单的 libxml2 解析器:
- 默认 sax 处理程序很好(实际上我想避免自己编写。我知道我可以使用自定义 sax 处理程序做我想做的事)
- 解析器应该嵌入可以任意实例化(可能是多线程)的 C++ 类中,libxml2 解析器上下文作为成员 var
- 还有其他组件也在使用 libxml2,但我无法控制(我无法准确说出它们的作用以及它们如何使用 libxml2)
- 在 C++ 类中,我想使用一个自定义错误处理程序,它不仅打印到 stderr,而且我想收集错误并抛出异常
例子:
这是不起作用的(根据我的测试和理解):
- 使用 xmlSetStructuredErrorFunc() 或 xmlSetGenericErrorFunc() 并将当前 C++ 实例设置为用户数据,因为这些函数只是设置了一个全局变量(不是线程安全的)
- 使用 xmlNewParserCtxt() 并将 ctx->sax->serror 设置为常规 C++ 方法 - 错误处理程序必须是静态的
- 与以前相同,但使用静态类方法-实际上确实有效,但同时我想设置 ctx->user_data (设置为当前 C++ 实例的“this”)-这会使解析器崩溃,看起来好像在里面libxml2 ctx->user_data 的函数通过应该只有 ctx 的函数传递......但是这种情况始终如一地发生,即看起来更像是一个特性而不是一个错误:-)
现在,有人知道如何让它工作吗?
很多谢谢!
.htaccess - 自定义 404 错误页面正在生成 500 错误
出于安全原因,我让所有 php 文件生成 404 错误,然后使用自定义 404 错误页面,如下所示:
我去的任何 php 脚本都会返回一个自定义的 404 错误页面,如我所愿,但在下面它说:
此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。
但是当我转到一个实际上不存在的页面时(比如说http://localhost/Hello/world.html
),我得到了我想要的错误页面。
我很困惑,我做错了什么。另外,我希望能够为我的自定义使用 php 页面ErrorDocument
,但我不确定这是否可能。
coldfusion - 在 Win2k8 R2 x64 上的 ColdFusion 10 中处理 404 错误时出现问题?
我在使用 IIS 中的自定义错误处理程序(执行 URL)在 Windows 2008 R2 x64 上的 ColdFusion 10 中正确处理 404 错误时遇到了困难。我已经在以前版本的 CF 中做到了这一点,没有任何问题。在 IIS 中,在网站功能下,我打开“错误页面”并将其设置为对所有 404 错误执行“/404.cfm”。
我遇到的问题是 404.cfm 页面的输出没有完全发送回浏览器,并且页面没有正确加载。有时我一无所获,有时我得到 1K,有时我得到更多。这是非常不一致的。
除了在 IIS 中设置 404.cfm 处理程序外,我还在 Application.cfm 中的 onMissingTemplate() 方法中调用它:
在我的404.cfm错误处理程序中,我正在调用:
...然后我输出一堆东西。
当我在 404.cfm 中删除对 cfheader 的调用时,错误处理程序会正确加载 [for ColdFusion requests]。那是因为没有任何东西通过 IIS - 相反,它只是通过 ColdFusion 中的 onMissingTemplate() 方法。但是,响应头给了我一个 200 状态码,这是一个问题!出于显而易见的原因,它需要是 404 状态码。
当我包含 cfheader 调用或请求非 ColdFusion 页面时(IIS 将生成 404 状态代码),我的 404.cfm 处理程序的输出未完全返回到浏览器。我认为这与 IIS 采取行动有关。
我确实在 CF 错误数据库中报告了这一点,但我想知道我是否做错了什么。错误在这里:https ://bugbase.adobe.com/index.cfm?event=bug&id=3488063
asp.net-mvc - 在 MVC 4 应用程序中处理带有自定义错误的 UnauthorizedAccessException
我通过在 filterConfig 注册中应用 HandleError 属性为应用程序启用了全局错误处理。
然后,我使用自定义错误(web.config)希望为每个服务器错误显示友好的错误消息。
对于大多数异常,这似乎工作正常,并且我得到了预期的行为,因为正在显示自定义错误页面视图(共享视图文件夹中的 Error.cshtml)。
但是,我最近注意到,如果抛出的错误是 UnauthorizedAccessException,这不是我看到的行为。
我对此感到有些困惑,因为在 fiddler 中我看到这个 UnauthorizedAccessException 异常返回一个普通的 500 内部服务器错误,就像标准异常一样。
那么标准异常怎么会遵守我的 customError 设置而 UnauthorizedAccessException 却没有呢?
以及如何让它们表现相同,因为它们本质上都是一个错误,我想阻止最终用户看到。
javascript - 如何捕获错误并将错误详细信息保存在数据库中并重定向到经典 asp 中的自定义错误页面?
如何捕获错误并将错误详细信息保存在数据库中并重定向到经典 asp 中的自定义错误页面?
我希望我应该在我网站的所有页面中包含一个 asp 页面,如果发生任何错误,它会获取该错误详细信息,将其保存到数据库或将其邮寄到邮件 ID 并重定向到自定义错误页面。如果您有任何想法,请帮助我。
perl - Perl SQLite 错误处理:根据错误码采取不同的动作
我是 Perl 编程的新手(也是 SO),所以我的问题可能以一种糟糕的方式表述,但我确实阅读了很多书籍和教程,但我没有找到任何解决(甚至提到)我的问题的东西。
我正在尝试使用 DBI 和 SQLite 编写一些代码,如果发生可恢复的错误(数据库已满或锁定等),则重试插入查询,但如果错误不可恢复(数据库已删除或损坏等),则会死亡。
我发现 SQLite C 接口导出错误代码:
http://www.sqlite.org/c3ref/c_abort.html
但我还没有发现任何与 Perl 类似的东西。我真希望我不必在我的第一个 Perl 程序中使用幻数!:-)
顺便说一句,我在网上看到的文档和示例很好地解释了 DBI 中的手动与自动(即有异常)错误处理,但没有一个显示如何根据错误类型采取不同的操作。这不是一个常见的用例吗?
此外,他们都同意 DBI::err 不是判断发生了哪个错误的正确变量。他们或多或少含蓄地说要使用 DBI::errstr,但我发现依赖字符串比较与面向人的可能多行错误字符串有点尴尬......
感谢您的任何建议!