问题标签 [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.
c++ - 用于库/应用程序组合的 C++ 中的错误处理/错误日志记录
多年来,我经常遇到以下问题模式:
我正在为一个包编写复杂的代码,该包由一个独立的应用程序和一个人们可以在其他应用程序内部使用的核心库版本组成。
我们自己的应用程序和用户使用核心库创建的应用程序都可能以批处理模式(离线、脚本化、远程和/或从命令行)以及交互方式运行。
库/应用程序需要复杂且大量的运行时输入,并且可能存在各种类似错误的输出,包括严重错误消息、输入语法警告、状态消息和运行统计信息。请注意,这些都是附带的输出,而不是应用程序的主要目的,应用程序将在其他地方显示或保存并使用不同的方法。
如果以交互方式运行,其中一些(可能只有非常严重的)可能需要一个对话框;但如果在批处理模式下运行,它需要登录而不停止用户输入;如果作为库运行,客户端程序显然希望在错误发生时拦截和/或检查错误。
这一切都需要跨平台:Linux、Windows、OSX。我们希望解决方案在任何平台上都不奇怪。例如,输出到 stderr 对 Linux 来说很好,但在链接到 GUI 应用程序时不能在 Windows 上工作。
库的客户端程序可以创建主类的多个实例,如果客户端应用程序能够区分每个实例的单独错误流,那就太好了。
让我们假设每个人都同意库方法通过简单的调用(错误代码和/或严重性,然后类似于 printf 的参数给出错误消息)记录错误就足够了。有争议的部分是客户端应用程序如何记录或检索它。
多年来我已经多次这样做了,但从未对解决方案完全满意。此外,这种子问题实际上对用户来说并不是很重要(如果出现问题,他们希望查看错误日志,但他们并不真正关心我们实现它的技术),但这个话题让程序员们兴奋不已他们总是在这个细节上浪费过多的时间,而且永远不会很开心。
任何人都知道如何将此功能集成到 C++ API 中,或者是否有公认的范例或良好的开源解决方案(不是 GPL,请,我想要一个可以在商业封闭应用程序和 OSS 中使用的解决方案项目)?
c# - 使用 .NET Remoting 时如何捕获未处理的异常
我想在服务器上的远程对象中捕获所有未处理的异常并将它们记录在那里,然后再将它们转换为一些自定义异常,以便特定异常不会跨越客户端/服务器边界。
我想我必须使用自定义频道同步,但是任何人都可以确认这一点和/或有任何其他建议吗?
php - 我可以使用 PHP 检测和处理 MySQL 警告吗?
我正在处理一个将 JobName 列定义为 UNIQUE 的 MySQL 表。如果有人尝试使用数据库中已经存在的 JobName 将新 Job 保存到数据库中,MySQL 会抛出警告。
我希望能够在我的 PHP 脚本中检测到这个警告,就像一个错误一样,并适当地处理它。理想情况下,我想知道 MySQL 抛出了什么样的警告,以便我可以分支代码来处理它。
这可能吗?如果不是,是因为MySQL没有这个能力,PHP没有这个能力,还是两者兼而有之?
.net - 当数据库离线时,您如何管理您的应用程序?
拿一个 .Net Winforms 应用程序 .. 混合一个不稳定的无线网络连接,与一些喜欢偶尔拔掉蓝色插头的用户一起搅拌,为了更好的措施,添加一个系统管理员,决定在没有警告的情况下重新启动 SQL 服务器框一次又一次地让每个人都保持警觉。
处理这种情况的建议和策略是什么:
错误处理 - 例如,您是否使用 Try/Catch 包装对服务器的每个调用,或者您是否依赖某种形式的通用错误处理来管理它?如果是这样,它看起来像什么?
应用程序管理 - 例如,您是否禁用应用程序并且在再次检测到连接之前不允许用户与其交互?你会怎么办?
c# - 从 C# 打印堆栈跟踪信息
作为我们产品中一些错误处理的一部分,我们想转储一些堆栈跟踪信息。但是,我们体验到许多用户只会截取错误消息对话框的屏幕截图,而不是向我们发送程序中可用的完整报告的副本,因此我想在此对话框中提供一些最小的堆栈跟踪信息。
我机器上的 .NET 堆栈跟踪如下所示:
我有这个问题:
格式看起来是这样的:
但是,at和in关键字,我认为如果它们运行,例如,挪威 .NET 运行时而不是我安装的英文运行时,它们将被本地化。
有什么方法可以让我以与语言无关的方式分离这个堆栈跟踪,这样我就可以只显示那些条目的文件和行号?
换句话说,我想从上面的文字中得到这些信息:
您可以提供的任何建议都会有所帮助。
php - php函数参数错误抑制,empty() isset() 仿真
我很确定这个问题的答案是否定的,但万一有一些 PHP 大师
是否可以以可以传入无效参数或不存在的变量的方式编写函数,并且如果不使用 php 就不会出错'@'
就像 empty 和 isset 一样。你可以传入一个你刚刚组成的变量,它不会出错。
java - 如何在 Java 中捕获崩溃日志
我正在使用 Java 开发一个跨平台应用程序,该应用程序目前在 Windows、Linux 和 MacOS X 上运行良好。我正在尝试找出一种很好的方法来检测(和处理)“崩溃”。是否有一种简单的跨平台方法来检测 Java 中的“崩溃”并采取相应措施?
我猜“崩溃”是指未捕获的异常。然而,代码确实使用了一些 JNI,因此能够从错误的 JNI 代码中捕获崩溃会很好,但我感觉这是 JVM 特定的。
bash - Bash 中的错误处理
你最喜欢在 Bash 中处理错误的方法是什么?我在网上找到的处理错误的最佳示例是由 William Shotts, Jr 在http://www.linuxcommand.org编写的。
他建议在 Bash 中使用以下函数进行错误处理:
您是否有在 Bash 脚本中使用的更好的错误处理例程?
java - finally 块是否总是在 Java 中执行?
考虑到这段代码,我是否可以绝对确定该finally
块始终执行,无论something()
是什么?
sql - Sql Server 2005 错误处理 - 内部异常
在 C# 中,您可以获得原始错误并使用向上传递的内部异常跟踪执行路径(堆栈跟踪)。我想知道当嵌套 2 或 3 层深的存储过程中发生错误时,如何使用 sql server 2005 中的错误处理 try/catch 来实现这一点。
我希望像 ERROR_MESSAGE()、ERROR_LINE()、ERROR_PROCEDURE()、ERROR_SEVERITY() 这样的函数可以轻松地向上传递,以便顶级存储过程可以访问它们。