问题标签 [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.
c++ - `void func() throw(type)` 的意义何在?
我知道这是一个有效的 c++ 程序。函数声明中的 throw 有什么意义?AFAIK 它什么也不做,也不用于任何事情。
castle-windsor - Castle Windsor ResolveAll 当任何注册服务无法解析时抛出
似乎 Castle Windsor (2.0) 方法的当前行为
就是忽略所有由于缺少依赖关系而无法解析的服务。当任何服务无法解决时,解决所有服务+抛出异常的推荐方法是什么?
php - 在 PHP 中捕获异常语法错误
我试图在 PHP 中使用异常来避免多个if-then-else
块。但是,当我尝试捕获异常时,我得到了错误Parse error: syntax error, unexpected T_CATCH in /directory/functions.php on line 66
。我的投掷和接球做错了吗?
c# - 我什么时候应该使用 ThrowHelper 方法而不是直接抛出?
什么时候适合使用ThrowHelper方法而不是直接抛出?
我读过调用ThrowHelper方法(唯一目的是抛出异常的方法)而不是直接抛出应该产生更小的字节码。
这一点,以及明显的封装(另一层间接),可能是不直接抛出的好理由,至少在某些情况下是这样。
无论如何,IMO 的缺点也不是微不足道的。
- (异常)控制流的一部分被隐藏了
- 异常最终有一个更神秘的堆栈跟踪
- 编译器(2.0)将无法识别ThrowHelper调用是方法的退出点,因此需要一些代码周围。
我有限的经验是,整体设计通常会变得更糟。
这可能部分是个人品味的问题。无论如何,您对这个问题的个人指导方针是什么?您是否发现将ThrowHelpers用于方法参数验证等所有常见任务(ThrowArgumentNullException(paramName)等)是一个好主意?我在这个问题上遗漏了一些明显的东西吗?
顺便说一句,我试图不将此问题与验证问题混为一谈,例如:
c++ - 在 C++ 中通过指针捕获异常
我发现捕获异常有三种方式,有什么区别?
1)按价值捕获;
2) 通过引用捕获;
3) 通过指针捕捉;
我只知道按值捕获会调用对象的两个副本,按引用捕获会调用一个。那么如何通过指针捕获呢?何时使用指针捕获?除了抛出一个对象,我可以像这样抛出一个指向对象的指针吗?
ruby-on-rails - rake:处理未定义参数的最佳方式?
我在 Rails 应用程序上有一个 rake 任务,需要一个参数,称为USER_ID
.
我想我想抛出一个停止执行的异常。这是我的任务的样子:
什么代码THROW SOMETHING HERE
?
c++ - 被引用捕获的抛出对象的生命周期
C++ 标准,第 15.1.4 段说:
被抛出异常的临时副本的内存以未指定的方式分配,除非在 3.7.3.1 中注明。只要有针对该异常执行的处理程序,临时性就会持续存在。
我想知道为什么这段代码会崩溃(我知道这不是最佳做法):
具体来说,抛出的 magicException 对象的析构函数在 catch 块之前被调用。但是,如果我向我的类添加一个复制构造函数:
然后代码开始工作,析构函数在预期的位置(catch 块的末尾)被调用,但有趣的是复制构造函数仍然没有被调用。编译器是否对其进行了优化(Visual C++ 2008 关闭了优化),还是我遗漏了什么?
c++ - 我是否也只在函数头或声明中指定异常类型?(C++)
在我的 SVector.cpp 文件中,我是否也应该包含 throw (underflow_error) 部分?
或者
谢谢。
c++ - 调用终止时是否调用自动对象的析构函数?
当我们throw
使用析构函数时会发生什么?我知道它会导致terminate()
被调用,并且确实释放了内存并调用了析构函数,但是,这是在调用之前还是之后 ?也许这里的问题是在堆栈展开时使用它是问题所在。throw
foo
throw
c++ - throw 在 catch 省略号 (...) 中是否会重新抛出 C++ 中的原始错误?
如果在我的代码中,我有以下代码段:
throw 会重新抛出默认省略号处理程序捕获的特定异常吗?