Tag: 抛出

为什么'抛出'在Swift中不安全?

Swift中对我最大的误解是throws关键字。 考虑下面的一段代码: func myUsefulFunction() throws 我们不能真正理解它会抛出什么样的错误。 我们唯一知道的是它可能会抛出一些错误。 了解错误的唯一方法是查看文档或在运行时检查错误。 但这不是反对斯威夫特的性质吗? Swift具有强大的generics和一个types系统来使代码具有performance力,但是它的感觉就好像是完全相反,因为你不能从函数签名中得到有关错误的任何信息。 为什么? 还是我错过了一些重要的东西,并误解了这个概念?

以编程方式抛出NullPointerException可以吗?

当有后置条件时,方法的返回值不能为空,可以做些什么? 我可以 assert returnValue != null : "Not acceptable null value"; 但断言可能被closures! 那么可以这样做 if(returnValue==null) { throw new NullPointerException("return value is null at method AAA"); } ? 或者是这样的情况下使用用户定义的exception(如NullReturnValueException)更好?

generator.throw()的优点是什么?

PEP 342(通过增强型生成器的协程 throw()为生成器对象添加了一个throw()方法,允许调用者在生成器内引发exception(就像yieldexpression式抛出一样)。 我想知道这个function的用例是什么。

什么是一个“抛出”的声明呢?

这些天,我一直在阅读很多C ++常见问题 ,尤其是这个页面 。 通过阅读本节,我发现了一种作者称之为“exception调度程序”的“技术”,它允许某人将他的所有exception处理组合在一个便利的函数中: void handleException() { try { throw; // ?! } catch (MyException& e) { //…code to handle MyException… } catch (YourException& e) { //…code to handle YourException… } } void f() { try { //…something that might throw… } catch (…) { handleException(); } } 令我困扰的是单throw; 声明:如果你考虑给定的例子,那么很明显它是这样做的:它重新抛出f()第一个被捕获的exception并再次处理它。 但是如果我直接调用handleException()而不是从catch()子句中调用呢? 有没有指定的行为? 此外,对于奖励积分,还有其他“怪异”(可能不是好词)使用的throw ,你知道吗? […]

为什么在调用一个函数时“抛出exception”是必要的?

class throwseg1 { void show() throws Exception { throw new Exception("my.own.Exception"); } void show2() throws Exception // Why throws is necessary here ? { show(); } void show3() throws Exception // Why throws is necessary here ? { show2(); } public static void main(String s[]) throws Exception // Why throws is necessary here ? { […]

有没有办法让Runnable的run()抛出exception?

我在一个实现了Runnable的类的run()中调用的方法被devise为抛出一个exception。 但Java编译器不会让我这样做,并build议我用try / catch来包围它。 问题是通过围绕它try / catch我使特定的 运行()无用。 我想抛出这个exception。 如果我为run()本身指定了throws ,那么编译器会抱怨说Exception is not compatible with throws clause in Runnable.run() 。 不要让run()抛出exception,通常我完全没问题。 但我有独特的情况,我必须有这个function。 如何解决这个限制?

在修改的exception上使用`throw;`

我有一个函数foo可以抛出一个exception。 在另一个函数中,我调用foo但是如果抛出exception,我可以添加一些更多的细节。 (我宁愿不将这样的信息作为parameter passing给foo因为它不属于那个属性,因为这个函数的generics特性。) 所以我在调用者中这样做: try { foo(); } catch (bar& ex){ ex.addSomeMoreInformation(…); throw; } 会throw重新抛出修改的exception还是我需要使用throw ex; ? 后者大概会采取价值副本,所以我宁愿不这样做。 会throw一个有价值的副本吗? 我怀疑它不会。 (我知道我可以validation,但我担心绊倒一个未指定或未定义的结构,所以想知道肯定)。

你可以扔什么Java?

传统观点认为只能抛出扩展Throwable对象,但是可以禁用字节码检验器,让Java编译和运行抛出任意对象甚至原语的代码? 我抬头看JVM的运行,它将popup操作数堆栈中的第一个objref; 但它会检查在运行时是否指向Throwable ?

C#中有像Java一样的throws关键字吗?

可能重复: 如何在C#中使用Java风格的关键字? 我有一个例如发生exception的function private void functionName() throws Exception { // some code that might throw an exception } 谢谢!

什么时候在Java方法声明中使用throws?

所以我认为我对Java中的exception处理有了很好的基本理解,但最近我正在阅读一些代码,这给我一些困惑和疑惑。 我主要怀疑的是,我想在这里介绍一个人应该在什么时候抛出Java方法声明,如下所示: public void method() throws SomeException { // method body here } 从阅读一些类似的post我收集, 抛出被用来作为一种声明SomeException可能被抛出在方法的执行过程中。 我的困惑来自一些看起来像这样的代码: public void method() throws IOException { try { BufferedReader br = new BufferedReader(new FileReader("file.txt")); } catch(IOException e) { System.out.println(e.getMessage()); } } 是否有任何理由,你会想在这个例子中使用抛出 ? 看来,如果你只是做基本的exception处理像IOExceptionexception,你只需要try / catch块,就是这样。