草庐IT

Try-Catch-Finally

全部标签

php - 何时使用 Try Catch block

好的,这可能是一个非常菜鸟的问题,但我发现关于这方面的PHP文档和几个Internet搜索并没有给我任何想法。WhenshouldIusetry-catchblockstoimprovemyapplication?我读到有人说我们应该只使用try-catchblock来防止fatalerror。我读到其他人说我们应该只在意外错误上使用它(等待什么?意外?如果它们是意外错误,我怎么能用try-catch来防止它们?我应该把我所有的应用程序代码放在一个tryblock中吗?)。其他人只是说try-catchblock应该在任何地方使用,因为它们也可以扩展(扩展Exception类)。最后有

php - 如何在 PHP 中有效地使用 try...catch block

我一直在我的PHP代码中使用try..catchblock,但我不确定我是否正确使用了它们。例如,我的一些代码如下所示:try{$tableAresults=$dbHandler->doSomethingWithTableA();$tableBresults=$dbHandler->doSomethingElseWithTableB();}catch(Exception$e){return$e;}所以我将多个数据库操作分组在同一个try/catchblock中,因为如果任何事务中发生任何异常,我将能够处理它。我这样做是因为我认为它比:try{$tableAresults=$dbHand

java - 使用 try/catch 防止应用程序崩溃

我一直在开发一个Android应用程序,它经常使用try/catch来防止它在不需要的地方崩溃。例如,xmllayout中带有id=toolbar的View的引用如下://seenewexamplebelow,thisoneisjustconfusing//itseemslikeIamaskingaboutemptytry/catchtry{Viewview=findViewById(R.id.toolbar);}catch(Exceptione){}此方法在整个应用程序中使用。堆栈跟踪没有打印出来,很难找到问题所在。应用突然关闭,没有打印任何堆栈跟踪。我让我的学长向我解释,他说,Th

java - 在 finally block 中抛出异常

有没有一种优雅的方式来处理finallyblock中抛出的异常?例如:try{//Usetheresource.}catch(Exceptionex){//Problemwiththeresource.}finally{try{resource.close();}catch(Exceptionex){//Couldnotclosetheresource?}}如何避免finallyblock中的try/catch? 最佳答案 我通常这样做:try{//Usetheresource.}catch(Exceptionex){//Probl

java - 没有 "try-finally"做 "catch"有意义吗?

我看到了一些这样的代码:try{db.store(mydata);}finally{db.cleanup();}我认为try应该有一个catch?为什么这段代码会这样? 最佳答案 如果您希望当前执行的方法仍然抛出异常,同时允许适本地清理资源,这很有用。下面是一个处理调用方法异常的具体示例。publicvoidyourOtherMethod(){try{yourMethod();}catch(YourExceptionex){//handleexception}}publicvoidyourMethod()throwsYourExce

Java Try Catch finally 没有 Catch 的 block

我正在审查一些新代码。该程序只有一个try和一个finallyblock。由于排除了catchblock,如果tryblock遇到异常或任何可抛出的东西,它是如何工作的?是直接进入finallyblock吗? 最佳答案 如果tryblock中的任何代码可以抛出已检查异常,则它必须出现在方法签名的throws子句中。如果抛出未经检查的异常,它就会从方法中冒出来。finallyblock总是被执行,无论是否抛出异常。 关于JavaTryCatchfinally没有Catch的block,我们

java - 即使你抛出一个新的异常,finally block 是否也会运行?

即使执行了catchblock并抛出了第二个异常,在这段代码中是否会设置someVar?publicvoidsomeFunction()throwsException{try{//CODEHERE}catch(Exceptione){Log.e(TAG,"",e);thrownewException(e);}finally{this.someVar=true;}} 最佳答案 是的,finallyblock总是运行...除非:运行try-catch-finallyblock的线程被杀死或中断你使用System.exit(0);底层虚拟

c# - 为什么在 "try"或 "catch"或 "finally"的范围内声明的变量没有?

在C#和Java(可能还有其他语言)中,在“try”block中声明的变量不在相应的“catch”或“finally”block的范围内。例如,以下代码无法编译:try{Strings="test";//(morecode...)}catch{Console.Out.WriteLine(s);//Javafans:think"System.out.println"hereinstead}在此代码中,catchblock中对s的引用会发生编译时错误,因为s仅在tryblock的范围内。(在Java中,编译错误是“scannotberesolved”;在C#中,是“Thename's'do

java - 为什么在 finally block 中更改返回的变量不会更改返回值?

我有一个简单的Java类,如下所示:publicclassTest{privateStrings;publicStringfoo(){try{s="dev";returns;}finally{s="overridevariables";System.out.println("EntryinfinallyBlock");}}publicstaticvoidmain(String[]xyz){Testobj=newTest();System.out.println(obj.foo());}}这段代码的输出是这样的:EntryinfinallyBlockdev为什么s没有在finallybl

java - 从 Java 中的 finally block 返回

我最近惊讶地发现,在Java的finallyblock中可以有一个return语句。似乎很多人认为按照“Don'treturninafinallyclause”中所述的那样做是一件坏事。'。再深入一点,我还发现了'Java'sreturndoesn'talways'展示了finallyblock中其他类型的流控制的一些非常可怕的例子。所以,我的问题是,谁能给我一个示例,让finallyblock中的return语句(或其他流控制)产生更好/更易读的代码? 最佳答案 几年前我很难找到一个由此引起的错误。代码类似于:Objectprob