问题标签 [throw]

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 投票
10 回答
237774 浏览

c++ - 从构造函数中抛出异常

我正在与一位同事就从构造函数中抛出异常进行辩论,并认为我想要一些反馈。

从设计的角度来看,可以从构造函数中抛出异常吗?

假设我在一个类中包装了一个 POSIX 互斥体,它看起来像这样:

我的问题是,这是标准的做法吗?因为如果pthread mutex_init调用失败,互斥对象将不可用,因此抛出异常可确保不会创建互斥对象。

我是否应该为 Mutex 类创建一个成员函数 init 并pthread mutex_init在其中调用将基于pthread mutex_init的返回返回一个 bool ?这样我就不必为这样一个低级别的对象使用异常。

0 投票
5 回答
6797 浏览

c# - C#:你提出还是抛出异常?

我知道这可能并不重要,但我想知道什么是正确的。

如果一段代码包含某个版本的throw new SomeKindOfException(). 我们是否说这段代码可能会引发异常?还是抛出异常?

关键字是throw,所以我有点倾向于那个,但也经常使用引发异常......

它们有某种不同的含义吗?其中一个是否暗示了与另一个的差异?还是只是两个词的意思完全一样?

0 投票
6 回答
25658 浏览

c# - 抛出异常后我必须中断吗?

我正在用 C# 编写一个自定义类,如果人们在某些方法中输入错误,我会抛出几个异常。如果抛出异常,抛出后方法中的任何代码是否仍会被执行?我必须在投掷后休息一下,还是投掷总是退出该方法?

0 投票
5 回答
3763 浏览

c++ - 调用可以在 C++ 中引发异常的函数的析构函数

我知道我不应该从析构函数中抛出异常。

如果我的析构函数调用了一个可以抛出异常的函数,如果我在析构函数中捕获它并且不进一步抛出它可以吗?还是它会导致中止,我根本不应该从析构函数中调用这些函数?

0 投票
4 回答
5736 浏览

c++ - 在 C++ 中,如果 throw 是一个表达式,它的类型是什么?

我在对 reddit 的一次简短尝试中选择了这个:

http://www.smallshire.org.uk/sufficientlysmall/2009/07/31/in-c-throw-is-an-expression/

基本上,作者在 C++ 中指出:

是一个表达式。这实际上在 C++ 标准中相当清楚地说明,无论是在正文中还是在语法中。但是,不清楚(至少对我而言)是什么类型的表达式?我猜到了“ void”,但对 g++ 4.4.0 和 Comeau 进行了一些试验,得出了以下代码:

编译器对 //1 没有任何问题,但在 //2 上却大吃一惊,因为条件运算符中的类型不同。所以throw表达式的类型似乎不是无效的。

那是什么?

如果您回答,请使用标准中的引用来支持您的陈述。


事实证明,这并不是关于 throw 表达式的类型,而是条件运算符如何处理 throw 表达式——这在今天之前我当然不知道。感谢所有回复的人,尤其是 David Thornley。

0 投票
6 回答
11030 浏览

java - 抛出接口中未定义的异常

当您需要抛出未在您正在实现的接口中定义的异常时,最佳实践是什么?

这是一个例子:

在这种情况下,您在读取纸杯蛋糕时会发生特定异常,因此您想抛出与此相关的异常。但是,Reader并没有在它的接口中定义这种类型的异常,那你怎么办呢?此外,将CupcakeException添加到Reader接口中的throws子句是没有意义的,因为这种类型的异常是CupcakeReader 特有的。解决此问题的一种方法是让Reader定义read以便它抛出一些父类型,例如Exception,但随后您会丢失异常的上下文。在这种情况下你应该怎么做?谢谢!


另一个有趣的情况涉及您无法控制的界面。在这种情况下,表明出现问题的最佳方式是什么?

出于说明目的,这里是另一个示例:

在这种情况下,您无法更改Reader,但您想表明CupcakeReaderread方法出现问题。

0 投票
2 回答
2109 浏览

c# - C# 实时尝试 Catch

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

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

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

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

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

0 投票
4 回答
1542 浏览

c - C(不是 C++)的异常库

我正在为 C 滚动我自己的异常库,并希望有很好的例子来检查。

到目前为止,我一直在看大卫汉森的: http ://drhanson.net/work/

但我知道我过去见过其他可用的。你能给我一些额外的指示吗?

谢谢,

SetJmp

0 投票
2 回答
6445 浏览

c++ - throw 和 throw 与捕获异常的 arg 有什么区别?

想象两段相似的代码:

这些实际上是相同的还是以某种微妙的方式不同?例如,第一个是否导致运行复制构造函数,而第二个可能重用相同的对象来重新抛出它?

0 投票
2 回答
914 浏览

javascript - 在具有错误对象相关性的 Javascript 中引发错误

这几乎与 IE 相关,因为 IE 是我用来测试它的环境,但我想知道在抛出错误时是否会影响错误对象属性的相关性。考虑以下 javascript:

进一步向下你的代码

所以上面会抛出一个错误,但是调试信息中报告的错误会显示在 my.js 的第 9 行而不是第 3201 行抛出的错误。这是您可以使用标准方法更改的内容吗?