问题标签 [try-catch]

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 投票
6 回答
9733 浏览

c++ - 捕获 std::bad_alloc 的策略

所以我在开发中经常使用 Qt 并且喜欢它。Qt 对象的通常设计模式是使用new.

几乎所有示例(尤其是 Qt 设计器生成的代码)都绝对不检查std::bad_alloc异常。由于分配的对象(通常是小部件等)很小,这几乎不是问题。毕竟,如果您未能分配 20 个字节之类的东西,那么您可能无法解决这个问题。

目前,我采用了在 try/catch 中包装“大”(大小超过一页或两页的任何内容)分配的策略。如果失败,我会向用户显示一条消息,几乎任何更小的消息,我都会让应用程序崩溃并出现std::bad_alloc异常。

所以,我想知道这方面的思想流派是什么?

检查每项new操作是否是好政策?还是只有我认为有可能失败的人?

此外,在处理资源可能受到更多限制的嵌入式环境时,这显然是一个完全不同的故事。我在桌面应用程序的上下文中询问,但也会对涉及其他场景的答案感兴趣。

0 投票
13 回答
95333 浏览

c# - 当不抛出异常时,try/catch 块会损害性能吗?

在与 Microsoft 员工进行代码审查时,我们在一个try{}块中发现了一大段代码。她和一位 IT 代表建议这可能会影响代码的性能。事实上,他们建议大部分代码应该在 try/catch 块之外,并且只检查重要的部分。微软员工补充说,即将发布的白皮书警告不要使用不正确的 try/catch 块。

我环顾四周,发现它会影响优化,但它似乎只适用于在作用域之间共享变量时。

我不是在问代码的可维护性,甚至不是在处理正确的异常(毫无疑问,有问题的代码需要重构)。我也不是指使用异常进行流控制,这在大多数情况下显然是错误的。这些都是重要的问题(有些更重要),但不是这里的重点。

当不抛出异常时,try/catch 块如何影响性能?

0 投票
3 回答
13661 浏览

c++ - C++ 异常处理如何转化为机器码

在精神上,我一直想知道当 C++ 编译将其转换为汇编程序时,try/throw/catch 在幕后看起来如何。但是因为我从不使用它,所以我从来没有时间检查它(有些人会说懒惰)。

是用于跟踪trys 的普通堆栈,还是单独为此目的而保留的每个线程堆栈?MSVC 和 g++ 之间的实现是大还是小?请给我看一些伪 asm(IA-32 也可以),这样我就不必自己检查了!:)

编辑:现在我了解了 MSVC 在 IA-32 处理方面的实现基础。有人知道 IA-32 上的 g++ 或任何其他 CPU 吗?

编辑 2(11 年后): 以下是一些性能数据。他们还免费提供源代码

0 投票
9 回答
5284 浏览

c# - 在 .NET 中使用 try-catch 进行流控制是否“不好”?

我刚刚在一个项目中发现:

我想与开发人员交谈,而不是写这篇文章,说引发 null 异常(因为school理论上可能是 null ,而不是myLabel)实际上会使计算机发出三声哔哔声并休眠两秒钟。但是,我想知道我是否记错了规则。显然,这不是 try/catch 的预期用途,但这是因为它违背了意图,还是因为性能考虑而变得糟糕?我觉得这很糟糕,但我想说的不仅仅是“那真的很糟糕”。

0 投票
3 回答
1282 浏览

c++ - 在 C++ 中捕获类型错误

我如何检查结果是否是正确的类型(int、float、double 等),然后抛出并捕获异常以防万一?

谢谢大家,

弗拉德。

0 投票
2 回答
2109 浏览

c# - C# 实时尝试 Catch

我希望得到真正使用 C# 进行实时编程或真正了解语言内部结构的人的回应。

我知道异常不应该用于处理正常处理,而只能用于检测错误情况。关于这个话题有很多讨论。

我想知道是否有任何运行时间减慢只是因为有一个 try/catch 块(除非程序无论如何都必须结束,否则它永远不会捕获异常)。try/catch 块位于必须重复调用的函数内。我怀疑只有最低的成本。

是否可以根据 CPU 周期或其他任务(与浮点乘法相同的成本)或其他方式来量化成本?

我们在 windows XP 下使用 Microsoft C#.Net 3.5。

0 投票
5 回答
40279 浏览

php - getimagesize 找不到文件时处理错误

当我尝试getimagesize($img)并且图像不存在时,出现错误。我不想先检查文件是否存在,只处理错误。

我不确定如何try catch工作,但我想做类似的事情:

0 投票
1 回答
670 浏览

nant - TeamCity 4.5 无法识别 nant 脚本中的 trycatch 元素

我们的团队最近升级到 TeamCity 4.5.4,但在 TeamCity 运行我们的 nant 构建脚本时遇到了问题。

我们现在收到一条错误消息:Invalid element <trycatch>. Unknown task or datatype.

我们在升级期间或之后没有更改我们的构建脚本,所以我想知道我们需要进行哪些更改(如果有的话)以使其再次正常工作。

导致问题的脚本部分如下:

有没有其他人遇到过这个问题?

0 投票
7 回答
49084 浏览

java - 未捕获 Java 异常

为什么Java中的一些异常没有被捕获catch (Exception ex)?这是代码完全失败并出现未处理的异常。(Java 版本 1.4)。

我得到一个Exception in thread "main" java.lang.NoSuchMethodError

但这有效

我明白了Caught NoSuchMethodError java.lang.NoSuchMethodError:

我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?

0 投票
2 回答
903 浏览

sql-server - 记录 SQL 错误

SQL Server 2008 有一个新的 try/catch 结构。如果我在一系列嵌套存储过程中遇到错误,我喜欢将调用堆栈记录在错误表中。问题是,如果我启动了一个事务(对于更新数据库的操作来说是这样),当 try/catch 语句的 catch 部分中的代码回滚事务时,写入错误表的记录将被删除.

欢迎任何关于我如何解决这个问题的提示。