草庐IT

try-exception

全部标签

java - Slf4j with Log4j 在wrapper exception有消息时不打印wrapped exception (caused by)

第一个例子:publicclassMain{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(Main.class);publicstaticvoidmain(String[]args)throwsException{try{thrownewRuntimeException(newNullPointerException("NPE"));}catch(RuntimeExceptione){logger.error("Error:",e);}}}输出:Error:java.lang.RuntimeException:java.l

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

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

c++ - 无法通过引用 std::exception 捕获从 std::exception 派生的类

我创建了一个派生自std::exception的自定义异常类。#includeclassException:std::exception{public:constchar*what()constnoexceptoverride{return"test";}};intmain(){try{throwException();}catch(std::exception&e){std::cout此程序在Ubuntu上由g++-stdc++=17编译时,导致异常未被catchblock捕获,即使按引用捕获也应该捕获派生异常。它调用std::terminate,即使它发生在通过引用捕获其基类的tr

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# - 什么是异常(exception)?

我们每天都在谈论异常处理。我们都知道它是在执行过程中遇到一些意想不到的情况而产生的。这里有几个问题:什么是异常?它最低级的内存组成是什么?在.NET中,我可以将其视为某种异常类型的对象实例。在本土世界,它是由什么制成的?一些数据结构?如果程序员没有明确抛出异常,那么谁来创建异常,如下面的代码所示?它是某些语言运行时提供的支持的一部分吗?SomeExceptione=newSomeException();扔e;异常工作范式是什么?当发生某些错误时,语言运行时会创建相应数据结构/类型的实例来表示错误的详细信息,这是真的吗?我们如何知道运行时所有可能的意外情况,从而创建足够的异常数据结构/类

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++琐碎的try-catch导致中止

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

c++ - 为什么 C++ std::exception::what 成员常量?

我很好奇为什么std::exception::what成员函数是const?classexception{public:exception()throw(){}virtual~exception()throw();/**ReturnsaC-stylecharacterstringdescribingthegeneralcause*ofthecurrenterror.*/virtualconstchar*what()constthrow();}; 最佳答案 调用what()成员函数不应修改exception对象的可观察状态。通常,异常

c++ - 尽管 try-catch 异常仍泄漏到系统

我在继承的应用程序中有以下代码,使用VS2012针对boost1.48.0构建boolConvertToBoolean(conststd::string&s){try{returnboost::lexical_cast(s);}catch(...){if(boost::iequals("true",s.c_str())){returntrue;}}returnfalse;}如果您将“True”或“False”传递给此方法,lexical_cast将抛出一个bad_lexical_cast异常,因为它需要“0”或“1”并将评估字符串比较。这似乎在我的机器上工作正常,无论是在调试器内还是在

c++ - 除了重新抛出 std::exception_ptr 之外,我还能做什么

我有一个std::exception_ptr类型的对象,我想在它上面调用what(),但似乎没有办法做到这一点(如本答案中所述:HowdoImakeacalltowhat()onstd::exception_ptr)。在互联网上搜索后,似乎除了重新抛出它并在std::exception&中捕获它之外我无法对它做任何事情。这对我来说有点奇怪,但我想检查一下:std::exception_ptr可以做什么,然后重新抛出它以获得期望的细节?C++14或其他版本的C++有什么变化 最佳答案 不幸的是,没有。该标准仅保证std::except