我有一些这样的Scala代码:classCallee{@throws(classOf[MyCheckedException])defdoStuff(){}}像这样从Java中调用它:publicclassCaller{publicstaticvoidmain(String[]args){//thiswon'tcompile;theJavacompilercomplainsthatthecatchblockisunreachable//howeverwithoutthecatchblock,itcomplains"unhandledexceptionMyCheckedException"
我使用SonarQube来提高代码质量。我遇到了一个与异常处理相关的问题,它说从finallyblock中删除throw子句。}catch(Exceptione){thrownewMyException("requestfailed:",e);}finally{try{httpClient.close();}catch(IOExceptione){thrownewMyException("failedtocloseserverconn:",e);}}根据我的理解,上面的代码看起来不错。如果我在finally中删除throw子句并抑制异常,则此方法的调用者将无法知道服务器的状态。我不确定
作为实验,我决定在Eclipse调试器中启用以下断点:Throwable[IncludeSubclasses]:caughtanduncaught。然后我让我的代码(据我所知运行“良好”)在调试器下运行,当我的代码运行时,我惊讶地看到标准J2SE库代码抛出和捕获了几十个异常(我以前不知道)据我所知正常运行。例如,这里只是我发现的一些抛出异常的Java框架函数:URLClassLoader.findClass、FileDirContext.lookup和WebappClassLoader.findClassInternal.这是否被认为是Java应用程序的正常行为?这是我应该调查的事情吗
如果有一些代码显然不能抛出异常,而你编写了声明代码可以抛出该异常的周围代码,那么Java编译器似乎不一致。考虑这些代码片段。片段1catch从未抛出的异常。publicvoidg(){try{}catch(FileNotFoundExceptione){//anycheckedexception}}提示编译错误UnreachablecatchblockforFileNotFoundException.Thisexceptionisneverthrownfromthetrystatementbody片段2一个throws声明表明一个永远不会抛出的异常。publicvoidg()throw
不使用break关键字也可以使用throw退出switch语句吗?为什么使用throw而不是break?switch(number){case1:thrownewRuntimeException("Exceptionnumber1");case2:thrownewRuntimeException("Exceptionnumber2");} 最佳答案 有两种情况可以使用throw来中断switch的流程:流量控制;一般来说,这是一种不好的做法-您不希望异常行为决定您的程序决定下一步去哪里。不太可能但似是而非的默认情况;以防您遇到达到默
为什么你不能通过以下方式抛出InterruptedException:try{System.in.wait(5)//Justanexample}catch(InterruptedExceptionexception){exception.printStackTrace();//OnthisnextlineIamconfusedastowhyitwillnotletmethrowtheexceptionthrowexception;}我去了http://java24hours.com,但它没有告诉我为什么我不能抛出InterruptedException。如果有人知道原因,请告诉我!我很
我正在尝试在Map中查找匹配值,如果找到,我需要抛出IllegalArgumentException。我的代码如下:finalStringstringToBeMatched="someRandomString";map.values().stream().filter(a->stringToBeMatched==a.getField()).findAny().ifPresent(a->thrownewIllegalArgumentException());我在token“throw”上遇到语法错误。我不确定我哪里出错了。 最佳答案
我们都知道它是必需的。但是为什么仅在Java中需要它,而其他具有异常处理能力的类似语言不需要我们编写“throwsException”?有没有人知道在设计Java语言时发生了什么以及为什么要这样做?只是好奇。附言这可能不是一个实际或真正必要的问题-它可能对我正在进行的项目无论如何都没有帮助。但是某些语言特性激起了我的好奇心:D编辑看来我的问题很含糊!我想我错误地表达了这个问题。在处理Java代码的编程过程中,我们需要在某些时候使用“throwsException”类语法。但是在C#或C++甚至VB.Net和PHP中从来不需要类似的东西。那么为什么只有Java坚持这样做呢?
如果文件位于本地文件系统内,为什么在处理外部文件操作时必须在main方法中使用“throwsIOException”。 最佳答案 将throwsIOException添加到您的主函数可能不是强制性的,但必须对异常做一些事情。当您执行文件io、网络io或其他(?)io时,可能会出错。该文件可能不存在,它可能位于磁盘的坏扇区上,网络可能会在中途崩溃(如果磁盘不是本地磁盘,这可能对网络或文件io很重要)。您需要对IOException做一些事情的原因是它是一个已检查的异常。如果您调用一个构造函数或一个抛出已检查异常的函数,那么您要么需要通
这个问题在这里已经有了答案:Exceptionhandling:throw,throwsandThrowable(8个答案)关闭8年前。谁能举个例子说清楚Java异常处理中throw和throws的区别?我试过谷歌搜索但无法得出结论。请帮忙