问题标签 [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 投票
14 回答
27841 浏览

c++ - 我应该在 C++ 中使用异常说明符吗?

在 C++ 中,您可以通过使用异常说明符来指定函数可能会或可能不会抛出异常。例如:

由于以下原因,我对实际使用它们表示怀疑:

  1. 编译器并没有真正以任何严格的方式强制执行异常说明符,因此好处并不大。理想情况下,您希望得到一个编译错误。
  2. 如果一个函数违反了异常说明符,我认为标准行为是终止程序。
  3. 在 VS.Net 中,它将 throw(X) 视为 throw(...),因此对标准的遵守并不强。

你认为应该使用异常说明符吗?
请回答“是”或“否”,并提供一些理由来证明您的回答是正确的。

0 投票
9 回答
1043 浏览

c# - 您对异常消息使用什么样式?

在编写引发我在这里询问的异常的代码时,我来到了我的信息的结尾,并在标点符号处停了下来。我意识到几乎我曾经抛出的每条异常消息都可能有一个!某处。

你在写异常信息时用什么语气?浏览日志时,您是否发现某种特定风格的消息实际上比另一种更有帮助?

0 投票
7 回答
33399 浏览

c++ - 异常如何在 C++ 中工作(在幕后)

我一直看到人们说异常很慢,但我从来没有看到任何证据。因此,我不会问是否存在,而是会问异常在幕后是如何工作的,这样我就可以决定何时使用它们以及它们是否很慢。

据我所知,异常与多次返回相同,只是它还会在每次返回后检查是否需要再进行一次或停止。它如何检查何时停止返回?我猜有第二个堆栈保存异常的类型和堆栈位置,然后它会返回直到它到达那里。我还猜测第二个堆栈被触摸的唯一一次是在一次投掷和每次尝试/接球时。AFAICT 使用返回码实现类似行为将花费相同的时间。但这只是猜测,所以我想知道到底发生了什么。

异常如何真正起作用?

0 投票
6 回答
26220 浏览

c++ - 终于在 C++ 中

这是在标准 C++ 中实现类似最终行为的好方法吗?(无特殊指针)

  1. 对象没有抛出异常 -> NoException -> 对象已清理
  2. 对象抛出的异常 -> 已处理 -> NoException -> 对象已清理
  3. 对象抛出的异常 -> 抛出 -> 异常 -> 对象清理 -> 抛出
0 投票
6 回答
49411 浏览

c++ - 异常与断言?

可能的重复:
通过断言或异常进行合同测试设计?

在决定使用异常而不是断言(反之亦然)时,是否有一个经验法则可以遵循。现在我只会抛出我认为在用户端运行时会发生的事情(比如套接字或文件错误)。几乎我使用的所有其他东西都断言。

另外,如果我要抛出一个断言,那么抛出一个好的标准对象是什么?如果我没记错的话,有std::logic_error,但这不是扔的好东西吗?我会为丢失的文件或意外输入(例如从命令行而不是前端应用程序)抛出什么?

0 投票
11 回答
13571 浏览

java - 在 Java 中抛出异常

我有一个关于在 Java 中引发异常的问题,这似乎是我的一种误解,我想为自己澄清一下。

我一直在阅读处理异常代码的两种基本方法是:

1.) 使用“throw new ...”在 try-block 中抛出异常,并立即在 catch-block 中捕获它——所谓的 try-throw-catch 机制。

2.) 用“throw new ...”在方法中抛出异常,然后在方法的标头中声明该方法可能会用“throws ...”抛出异常 - 即所谓的 pass-the-buck。

我最近读到“抛出异常然后用相同的方法捕获它没有任何意义”,这让我思考是否我理解错误的方式,或者写这个的人有什么东西其他的。第一种处理异常的方法不正是这样做的吗(try-throw-catch 机制)?我的意思是,它抛出一个异常并以相同的方法捕获它。我已经读过,在一种方法中抛出异常并在另一种方法中捕获它是一种更好的做法,但这只是一种(可能更好)的方法。另一种方式也是合法和正确的,不是吗?

请您对此发表评论好吗?非常感谢。

0 投票
12 回答
4605 浏览

c++ - 如何抛出好的异常?

我听说你永远不应该抛出一个字符串,因为缺少信息,你会捕捉到你不希望捕捉到的异常。抛出异常的好习惯是什么?你继承一个基异常类吗?你有很多例外还是少数?你做 MyExceptionClass& 还是 const MyExceptionClass& ?等等。我也知道在析构函数中永远不应该抛出异常

我会补充一点,我了解合同设计以及何时抛出异常。我在问我应该如何抛出异常。

0 投票
5 回答
388 浏览

c# - 什么是“投”

谁能解释我在异常处理中使用 throw 吗?当我抛出异常时会发生什么?

0 投票
5 回答
9780 浏览

c++ - 关于 c++ 异常。函数()抛出()

我正在阅读这个页面http://www.cplusplus.com/doc/tutorial/exceptions.html 它说如果我写 function() throw(); 该函数中不能抛出异常。我尝试在 msvc 2005 中编写 throw()、throw(int)、throw(),但什么也没有。每个都有完全相同的结果。没有。我扔了 int, char*, 另一种类型,它们都以相同的方式被捕获。看起来 throw 根本不影响它。function() throw() 实际上做了什么?

0 投票
4 回答
5013 浏览

c++ - 限制 C++ 函数允许的抛出有什么好处?

从 C++ 函数声明可能的异常抛出有什么好处?换句话说,添加关键字throw()实际上做了什么?

我读过一个函数声明,例如void do_something() throw();应该保证没有异常来自do_something()函数;但是,这似乎不适用于调用 within 的函数do_something(),因此使其成为一个薄弱的保证。

请概述此语言功能的有用性(和最佳用例)。