草庐IT

Try-Except-Finally

全部标签

java - JVM 同步 Finally block

查看JavaVirtualMachineSpecification编译后的代码告诉我们如何"synchronized"block是用java实现的。以下代码:publicvoidtestSync(){Objectobj=getSomeObject();synchronized(obj){doSomething();}}...大致相当于这个伪代码:publicvoidtestSync(){Objectobj=getSomeObject();Object__temp=obj;monitorenter__temp;try{doSomething();}finally{monitorexit_

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++ 程序是否需要在其主要函数中包含 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++ - 尽管 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”并将评估字符串比较。这似乎在我的机器上工作正常,无论是在调试器内还是在

包含 return 的 C++ 宏表达式(就像 Rust 的 try!)

Rust有一个宏,它是一个表达式,可以计算出某个值,或者从函数返回。有没有办法在C++中做到这一点?像这样:structResult{boolok;intvalue;}Resultfoo(){...}#defineTRY(x)(auto&ref=(x),ref.ok?ref.value:return-1)intmain(){inti=TRY(foo());}不幸的是,它不起作用,因为return是一个语句而不是表达式。上面的代码还有其他问题,但它大致说明了我想要什么。有没有人有什么好主意? 最佳答案 感谢NathanOliver的l

c++ - try 和 catch 中的对象声明未在范围内定义

我想像这样在try/catch语句中声明一个对象:try{Objectobject(value);}catch(exception){return1;}object.usingExemple();G++告诉我对象没有在范围内定义。我明白如果try接收到一个异常对象,则不会创建并且无法使用。但是g++难道不应该知道我在函数发生时离开了吗?如何在不使用new的情况下声明一个在构造函数中抛出异常的对象?提前致谢:) 最佳答案 简单:如果您的代码使用object取决于它的创建而不引发异常(确实如此,因为如果发生异常则对象不可用),那么它包含

ios - 是否有删除 pod try 创建的文件的命令

podtry在尝试库时非常有用。使用完示例后,我想删除创建的文件。例如使用后podtryRxSwift我必须手动删除这个文件夹/private/var/folders/nq/vc7lyxms2z589w3pr239dt700000gn/T/CocoaPods/Try/RxSwift/有没有pod命令删除podtry创建的文件? 最佳答案 一般来说,删除antyhng/private/var/folders是安全的,因为该位置用于临时数据。您不必手动从该文件夹中删除内容,因为如果存在任何可用空间问题,操作系统通常会“收集垃圾”。如果您

iphone - try and catch 不处理 iphone 中的异常

当ind.row不是有效值或有时它变为nil时,我使用以下代码捕获错误@try{if(ind.row但是当这段代码执行时有时会出现这个错误Assertionfailurein-[NSIndexPathrow],/SourceCache/UIKit_Sim/UIKit-1262.60.3/UITableViewSupport.m:1948`这个错误可能是什么原因以及为什么没有处理异常 最佳答案 iOS中的断言不会抛出异常,因此您无法捕获它们。您需要弄清楚您对-row的调用出了什么问题。我的第一个猜测是“ind”已经被释放或什么的。