草庐IT

tri-plane

全部标签

c++ - __try/__except block 或 try/catch block 哪个更好用?

我想知道捕获我抛出的异常的更好方法是:它是__try/__exceptblock还是try/catchblock?我是用C++编写的,该程序只能在Windows上使用,所以可移植性不是问题。谢谢! 最佳答案 它们是两个非常不同的东西。try/catch是您熟悉的C++关键字。__try/__except用于捕获SEH异常。Windows本身引发的异常,例如DivisionByZero或AccessViolation。MSDNLibraryarticle中有详细描述。为它。您还可以使用它来捕获C++异常,因为它利用了WindowsSE

c++ - try-catch block 是否会降低性能

这个问题在这里已经有了答案:InwhatwaysdoC++exceptionsslowdowncodewhentherearenoexceptionsthown?(6个回答)关闭9年前。这个link国家,Tocatchexceptionswemustplaceaportionofcodeunderexceptioninspection.Thisisdonebyenclosingthatportionofcodeinatryblock.Whenanexceptionalcircumstanceariseswithinthatblock,anexceptionisthrownthattra

c++ - 函数 try block 何时有用?

我想知道程序员何时使用函数tryblock。什么时候有用?voidf(inti)try{if(i输出:(在ideone)greaterthanzerolessthanzero编辑:有些人可能认为函数定义的语法不正确(因为语法看起来不熟悉),我不得不说不,它不是不正确的。它被称为函数尝试block。请参阅C++标准中的§8.4/1[dcl.fct.def]。 最佳答案 您在构造函数中使用它来捕获初始化程序的错误。通常,您不会发现这些错误,因此这是一个非常特殊的用途。否则,它是无用的:除非我被证明是错误的,voidf()try{...}

c++ - 新 (std::nothrow) 与 try/catch block 中的新

我在学习new之后做了一些研究,不像我习惯的malloc(),分配失败时不会返回NULL,发现有两种不同的方式检查new是否成功。这两种方式是:try{ptr=newint[1024];}catch(std::bad_alloc&exc){assert();};和ptr=new(std::nothrow)int[1024];if(ptr==NULL)assert();我相信这两种方法可以实现相同的目标,(当然,如果我错了,请纠正我!),所以我的问题是:这是检查new是否成功的更好选择,完全基于可读性、可维护性和性能,同时忽略事实上的c++编程约定。 最佳答案

c++ - 为什么 Try-Catch block 会影响封闭范围内的变量?

为什么外层的temp在捕捉到第一个异常后会变空?#includeintmain(){std::stringtemp("exception");intvalue;while(std::cin>>value&&value!=0){try{if(value>9)throwtemp;elsestd::cout输入:121113输出:12exception//PrintingEmptystring预期输出:12exceptionexception我用g++7.3.0编译我的代码。 最佳答案 这似乎是GCC的复制省略实现中的一个错误。C++标准

c++ - if (condition) try {...} 在 C++ 中合法吗?

例如:if(true)try{//worksasexpectedwithbothtrueandfalse,butisitlegal?}catch(...){//...}换句话说,将try-block放在if条件之后是否合法? 最佳答案 tryblock(在C++中是statement)的语法是trycompound-statementhandler-sequence而if的语法是:attr(optional)if(condition)statement_trueattr(optional)if(condition)statement

exception - Go vs. 中的 panic recover try catch 用其他语言

我刚刚阅读了thispost关于Go中的panic/recover,我不清楚这与其他主流语言中的try/catch有何不同。 最佳答案 panic/recover是功能范围的。这就像说每个函数中只允许一个try/catchblock,并且try必须覆盖整个函数。这使得以与java/python/c#等使用异常相同的方式使用Panic/Recover非常烦人。这是故意的。这也鼓励人们以设计使用的方式使用Panic/Recover。您应该从panic()中恢复(),然后将错误值返回给调用者。

python - 最好 'try' 一些东西并捕获异常或测试是否可以首先避免异常?

我应该测试if某事是否有效,还是只测试try来执行它并捕获异常?是否有任何可靠的文档表明首选一种方法?还有一种方式pythonic?例如,我应该:iflen(my_list)>=4:x=my_list[3]else:x='NO_ABC'或者:try:x=my_list[3]exceptIndexError:x='NO_ABC'一些想法...PEP20说:Errorsshouldneverpasssilently.Unlessexplicitlysilenced.是否应该将使用try而不是if解释为静默传递的错误?如果是这样,您是否通过以这种方式使用它来明确地使其静音,从而使其正常?我不

node.js - 尝试安装 LESS 时出现 "Please try running this command again as Root/Administrator"错误

我正在尝试在我的机器上安装LESS,并且已经安装了Node。但是,当我输入“nodeinstall-gless”时,出现以下错误,不知道该怎么办?FPaulMAC:binpaul$npminstall-glessnpmERR!Error:EACCES,unlink'/usr/local/lib/node_modules/less'npmERR!{[Error:EACCES,unlink'/usr/local/lib/node_modules/less']npmERR!errno:3,npmERR!code:'EACCES',npmERR!path:'/usr/local/lib/nod

php - 使用 try {} catch {} 与 if {} else {} 相比有什么优势?

我正在从php中的普通mysql切换到PDO,我注意到测试错误的常用方法是使用try/catch组合而不是if/else组合。该方法的优点是什么,我可以使用一个try/catchblock而不是几个嵌套的if/elseblock来处理不同步骤(连接、准备、执行等)的所有错误吗? 最佳答案 我会使用try/catchblock,当通过代码的正常路径应该正常运行时,除非确实有一些异常情况——比如服务器关闭、您的凭据过期或不正确。我不一定会用它来处理非异常错误——比如当前用户没有担任正确的角色。也就是说,当您可以合理地预期并处理非异常情况