草庐IT

try-catch-else

全部标签

java - try catch block 创建干净代码的最佳实践是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:BestpracticesforexceptionmanagementinJAVAorC#我读过aquestion今天早些时候在stackoverflow上,它让我思考什么是处理异常的最佳实践。所以,我的问题是什么是最佳实践来处理异常以产生干净和高质量的代码。这是我的代码,我认为它很简单,但如果我错了或不清楚,请告诉我!我试图牢记方法中的可测试性和相同的抽象级别。欢迎提出建设性意见。:)importjava.awt.Point;importjava.io.Closeable;importjava.io.Fil

c++ - 使用 std::try_to_lock 的意外行为

当我尝试运行以下代码时,我遇到了令人惊讶和冲突的行为。#include#includeintmain(){std::mutexmtx;std::unique_locklock1(mtx);std::unique_locklock2(mtx,std::try_to_lock);std::cout当我在我的计算机上运行它时(使用clang++4.0.1或g++7.3.0的linux)它打印出lock1和lock2拥有锁(奇怪)。当我在cpp.sh上运行它时,它说lock1拥有锁,但lock2不拥有锁(如我所料)。所有都使用C++11和-Wall没有优化。 最佳答

c++ - 如果一个对象在本地创建并在 C++ 中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch block 中?

在tryblock中,调用函数“fun()”。在“fun”中创建了类“abc”的本地对象并抛出异常。这个本地对象被捕获在“catch”block中,并且打印了一个正确的值。由于这个对象是在本地创建的,它不应该打印“0(默认值)”,因为调用throw时会发生堆栈展开。#includeusingnamespacestd;classabc{intvar;public:abc():abc(0){}abc(inti):var(i){}voidprint(){cout输出:里面试试内部乐趣()里面abc:10我的期望:里面试试内部乐趣()内abc:0 最佳答案

c++ - 为什么可以用多态来代替switch或else-if语句?

我对帖子中的内容感到有些困惑:case-vs-if-else-if-which-is-more-efficient有人多次建议应该使用多态来代替长的case/if-else语句。我正在努力弄清楚这到底意味着什么。你如何替换:caseTASK_A://dothingsfortaskAbreak;caseTASK_B://dothingsfortaskBbreak;::caseTASK_J://dothingsfortaskJbreak;多态性?如果“做......”部分基本上是相同的重复,我可以理解它,但如果部分或所有“案例”之间存在显着差异,那么这是否仍然适用?

c++ - if else if,代码只解析到else条件

我正在尝试制作一个非常基本的文字冒险来测试我的基本技能。基本移动提示用户输入,如果它匹配某些字符串,则更改它们的坐标。我知道,这很愚蠢。但是if、elseif、else匹配它们的响应总是返回else,即使您输入其中之一匹配的字符串。stringaction;stringwest="gowest";stringeast="goeast";stringnorth="gonorth";stringsouth="gosouth";stringprompt="Don'tjuststandaroundwithyourdaggerinyourass!Dosomething!";//iwroteabu

c++ - 有没有办法至少为 catch(...) 获取一些信息?

有什么方法可以至少获得这里的一些信息吗?...catch(...){std::cerr我将此作为我所有代码的最后手段。让它崩溃会更好吗,因为那样我至少可以获得崩溃报告? 最佳答案 不,没有任何办法。尝试使所有异常类都派生自一个类,例如std::exception,然后捕获该类。不过,您可以在嵌套的try中重新抛出,以尝试找出类型。但是您也可以使用之前的catch子句(并且...仅作为后备)。 关于c++-有没有办法至少为catch(...)获取一些信息?,我们在StackOverflow

c++ - C++ 标准中的 if..else 语句

来自C++标准第6.4.1节:if语句:Ifthecondition(6.4)yieldstruethefirstsubstatementisexecuted.Iftheelsepartoftheselectionstatementispresentandtheconditionyieldsfalse,thesecondsubstatementisexecuted.Inthesecondformofifstatement(theoneincludingelse),ifthefirstsubstatementisalsoanifstatementthenthatinnerifstatem

c++ - 使用异常的 C++ 程序是否需要在其主要函数中包含 try/catch block ?

如果异常由C++代码抛出但未被捕获,则会导致SIGABRT。有些系统只打印“Abort”,有些系统还会打印e.what()的内容。问题是:C++标准是否规定main函数中需要try/catchblock才能将程序视为行为良好的程序,还是C++只是默默地依赖系统来处理它? 最佳答案 如C++17standarddraft中所述,在第18.3.9节[except.handle]中:Ifnomatchinghandlerisfound,thefunctionstd::terminate()iscalled;whetherornotthes

c++ - 条件运算符总是可以被 if/else 替换吗?

直到现在我还在想条件运算符inta=b==2?x1:x2;始终可由if/else语句替换。inta;if(b==2)a=x1;elsea=x2;两者之间的选择总是一个品味问题。今天我正在处理一项任务,如果我可以写的话,引用将会很有用:int&a;if(b==2)a=x1;elsea=x2;这是不允许的,我尝试使用条件运算符初始化引用。这很有效,我开始意识到,条件运算符并不总是可以用if/else语句替换。我的结论对吗? 最佳答案 你是对的。条件运算符是一个表达式,而if-else是一个语句。可以用语句的地方可以用表达式,反之则不然。

C++琐碎的try-catch导致中止

下面是简单的代码//g++centro.cc-ocentro#includeusingnamespacestd;intmain(intargc,char*argv[]){try{cout产生一个中止:GoingtothrowterminatecalledwithoutanactiveexceptionAborted(coredumped)我不明白哪里出了问题,有人能指出我正确的方向吗? 最佳答案 尝试扔东西。您没有抛出任何异常。throw;本身通常用于在catchblock中重新抛出相同的异常。将结果与throw"something