草庐IT

Try-catch

全部标签

java - 在 catch 和 finally 子句中抛出异常

在大学的一个Java问题上,有一段代码:classMyExc1extendsException{}classMyExc2extendsException{}classMyExc3extendsMyExc2{}publicclassC1{publicstaticvoidmain(String[]args)throwsException{try{System.out.print(1);q();}catch(Exceptioni){thrownewMyExc2();}finally{System.out.print(2);thrownewMyExc1();}}staticvoidq()thr

java - 在 try-with-resources block 中管理多个链接资源的正确习惯用法?

Java7try-with-resources语法(也称为ARMblock(AutomaticResourceManagement))在只使用一个AutoCloseable资源。但是,当我需要声明多个相互依赖的资源时,我不确定什么是正确的习惯用法,例如一个FileWriter和一个包装它的BufferedWriter。当然,这个问题涉及到一些AutoCloseable资源被包装的任何情况,而不仅仅是这两个特定的类。我想出了以下三个替代方案:1)我见过的天真的习惯用法是只在ARM管理的变量中声明顶级包装器:staticvoidprintToFile1(Stringtext,Filefil

java - 在 try-with-resources block 中管理多个链接资源的正确习惯用法?

Java7try-with-resources语法(也称为ARMblock(AutomaticResourceManagement))在只使用一个AutoCloseable资源。但是,当我需要声明多个相互依赖的资源时,我不确定什么是正确的习惯用法,例如一个FileWriter和一个包装它的BufferedWriter。当然,这个问题涉及到一些AutoCloseable资源被包装的任何情况,而不仅仅是这两个特定的类。我想出了以下三个替代方案:1)我见过的天真的习惯用法是只在ARM管理的变量中声明顶级包装器:staticvoidprintToFile1(Stringtext,Filefil

java - 在 catch block 内抛出异常 - 它会再次被捕获吗?

这似乎是一个编程101问题,我原以为我知道答案,但现在发现自己需要仔细检查。在下面这段代码中,第一个catchblock中抛出的异常会被下面的通用Exceptioncatchblock捕获吗?try{//Dosomething}catch(IOExceptione){thrownewApplicationException("Problemconnectingtoserver");}catch(Exceptione){//WilltheApplicationExceptionbecaughthere?}我一直认为答案是否定的,但现在我有一些可能由此引起的奇怪行为。大多数语言的答案可能都

java - 在 catch block 内抛出异常 - 它会再次被捕获吗?

这似乎是一个编程101问题,我原以为我知道答案,但现在发现自己需要仔细检查。在下面这段代码中,第一个catchblock中抛出的异常会被下面的通用Exceptioncatchblock捕获吗?try{//Dosomething}catch(IOExceptione){thrownewApplicationException("Problemconnectingtoserver");}catch(Exceptione){//WilltheApplicationExceptionbecaughthere?}我一直认为答案是否定的,但现在我有一些可能由此引起的奇怪行为。大多数语言的答案可能都

java - 应该尝试...catch 进入循环内部还是外部?

我有一个看起来像这样的循环:for(inti=0;i这是一个方法的主要内容,其唯一目的是返回float组。如果出现错误,我希望此方法返回null,因此我将循环放在try...catchblock中,如下所示:try{for(inti=0;i但后来我也想到了将try...catchblock放入循环中,如下所示:for(inti=0;i是否有任何理由(性能或其他方面)偏爱一个而不是另一个?编辑:共识似乎是将循环放在try/catch中更简洁,可能放在它自己的方法中。但是,仍然存在关于哪个更快的争论。有人可以对此进行测试并给出统一的答案吗? 最佳答案

java - 应该尝试...catch 进入循环内部还是外部?

我有一个看起来像这样的循环:for(inti=0;i这是一个方法的主要内容,其唯一目的是返回float组。如果出现错误,我希望此方法返回null,因此我将循环放在try...catchblock中,如下所示:try{for(inti=0;i但后来我也想到了将try...catchblock放入循环中,如下所示:for(inti=0;i是否有任何理由(性能或其他方面)偏爱一个而不是另一个?编辑:共识似乎是将循环放在try/catch中更简洁,可能放在它自己的方法中。但是,仍然存在关于哪个更快的争论。有人可以对此进行测试并给出统一的答案吗? 最佳答案

java - 你如何实现重试捕获?

Try-catch旨在帮助处理异常。这意味着它会以某种方式帮助我们的系统变得更加健壮:尝试从意外事件中恢复。我们怀疑在执行和指令(发送消息)时可能会发生一些事情,所以它被包含在try中。如果发生了几乎出乎意料的事情,我们可以做一些事情:我们编写catch。我不认为我们打电话只是为了记录异常。我认为catchblock是为了让我们有机会从错误中恢复。现在,假设我们从错误中恢复,因为我们可以修复错误。重试可能会非常好:try{some_instruction();}catch(NearlyUnexpectedExceptione){fix_the_problem();retry;}这将很快

java - 你如何实现重试捕获?

Try-catch旨在帮助处理异常。这意味着它会以某种方式帮助我们的系统变得更加健壮:尝试从意外事件中恢复。我们怀疑在执行和指令(发送消息)时可能会发生一些事情,所以它被包含在try中。如果发生了几乎出乎意料的事情,我们可以做一些事情:我们编写catch。我不认为我们打电话只是为了记录异常。我认为catchblock是为了让我们有机会从错误中恢复。现在,假设我们从错误中恢复,因为我们可以修复错误。重试可能会非常好:try{some_instruction();}catch(NearlyUnexpectedExceptione){fix_the_problem();retry;}这将很快

java - 即使从未抛出异常,使用 try-catch block 是否昂贵?

我们知道捕获异常的成本很高。但是,即使从未抛出异常,在Java中使用try-catchblock是否也很昂贵?我找到了StackOverflow问题/答案Whyaretryblocksexpensive?,但它是为.NET. 最佳答案 try几乎没有任何费用。代码的元数据不是在运行时设置try的工作,而是在编译时构建的,这样当抛出异常时,它现在执行一个相对昂贵的操作,即向上走栈并查看如果存在任何会捕获此异常的tryblock。从外行的角度来看,try还不如免费。它实际上是抛出异常让您付出代价-但除非您抛出数百或数千个异常,否则您仍然