草庐IT

try-catch-else

全部标签

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,我们

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

C++ 获取在 catch(...) block 中捕获的异常的描述

我可以得到一个被捕获的异常的描述catch(...)阻止?类似于std::exception的.what()。 最佳答案 你可以使用一个技巧:catch(...){handle_exception();}voidhandle_exception(){try{throw;}catch(conststd::exception&e){std::cout等等,你认为可能会抛出尽可能多的不同类型。如果您真的对可能抛出的内容一无所知,那么即使倒数第二个也是错误的,因为有人可能会抛出一个不指向以nul结尾的字符串的char*。抛出任何不是std:

C++ 获取在 catch(...) block 中捕获的异常的描述

我可以得到一个被捕获的异常的描述catch(...)阻止?类似于std::exception的.what()。 最佳答案 你可以使用一个技巧:catch(...){handle_exception();}voidhandle_exception(){try{throw;}catch(conststd::exception&e){std::cout等等,你认为可能会抛出尽可能多的不同类型。如果您真的对可能抛出的内容一无所知,那么即使倒数第二个也是错误的,因为有人可能会抛出一个不指向以nul结尾的字符串的char*。抛出任何不是std:

php - 编译错误: "g++: error trying to exec ' cc1plus': execvp: No such file or directory"

当我在php中使用popen编译C/C++程序时...我得到了这个错误:g++:errortryingtoexec'cc1plus':execvp:Nosuchfileordirectory但如果我在shell中运行php代码..它工作正常..在ArchLinux中..PHP代码:&1','r');$result=rfile($p);pclose($p);echo$result;?>谢谢 最佳答案 你需要安装gcc-c++包。yuminstallgcc-c++ 关于php-编译错误:"g

c++ - if 语句与 if-else 语句,哪个更快?

前几天我和一个friend就这两个片段发生了争执。哪个更快,为什么?value=5;if(condition){value=6;}和:if(condition){value=6;}else{value=5;}如果value是一个矩阵呢?注意:我知道value=condition?6:5;存在,我希望它更快,但它不是一个选项。编辑(由工作人员要求,因为问题目前处于搁置状态):请考虑由优化和非优化版本的主流编译器(如g++、clang++、vc、mingw)或MIPS生成的x86程序集来回答assembly。当程序集不同时,解释为什么版本更快以及何时(例如“更好,因为没有分支和分支有以下问

C++ catch block - 通过值或引用捕获异常?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:catchexceptionbypointerinC++我总是按值捕获异常。例如try{...}catch(CustomExceptione){...}但我遇到了一些代码,它改为使用catch(CustomException&e)。这是a)好的b)错误的c)灰色区域吗? 最佳答案 C++中异常的标准做法是...Throwbyvalue,catchbyreference在继承层次结构面前,按值捕获是有问题的。假设您的示例有另一种类型MyException继承自

c++ - "else if"是单个关键字吗?

我是C++新手。我经常看到如下条件语句:ifstatement_0;elseifstatement_1;问题:语法,我应该将elseif视为单个关键字吗?或者它实际上是外部else中的嵌套if语句,如下所示?ifstatement_0;elseifstatement_1; 最佳答案 如果我们转到draftC++standard,它们就不是一个关键字。2.12Keywords表4部分分别列出了if和else并且没有elseif关键字。我们可以通过转到cppreferencessectiononkeywords找到更易于访问的C++关键

c++ - 将标题分类为 8 个方向时如何避免 if/else if 链?

我有以下代码:if(this->_car.getAbsoluteAngle()_car.getAbsoluteAngle()>=330)this->_car.edir=Car::EDirection::RIGHT;elseif(this->_car.getAbsoluteAngle()>30&&this->_car.getAbsoluteAngle()_car.edir=Car::EDirection::UP_RIGHT;elseif(this->_car.getAbsoluteAngle()>60&&this->_car.getAbsoluteAngle()_car.edir=Car