草庐IT

Try-finally

全部标签

c# - 判断是否因为抛出异常而执行到 finally block 中

是否有可能确定代码当前是否由于抛出异常而在finally处理程序的上下文中执行?我更喜欢使用IDisposable模式来实现进入/退出范围功能,但对这种模式的一个担忧是,如果出现异常,您可能不一定希望发生范围结束行为出现在using的正文中。我会寻找这样的东西:publicstaticclassMyClass{publicstaticvoidMyMethod(){using(varscope=MyScopedBehavior.Begin()){//Dostuffwithscopehere}}}publicsealedclassMyScopedBehavior:IDisposable{p

c# - try catch finally block 是如何工作的?

在C#中,trycatchfinallyblock是如何工作的?所以如果有异常,我知道会跳转到catchblock,然后跳转到finallyblock。但是如果没有错误,catchblock不会运行,但是finallyblock会运行吗? 最佳答案 是的,无论是否有异常,finallyblock都会运行。Try[tryStatements][ExitTry][Catch[exception[Astype]][Whenexpression][catchStatements][ExitTry]][Catch...][Finally[fi

javascript - 如何在 try catch block 中使用 const

这个问题在这里已经有了答案:Javascriptsetconstvariableinsideofatryblock(7个回答)关闭5年前。const是一个block级变量,所以当我尝试可疑代码时try{constfoo=bar[global.name].foofoo[global.name2];}catch(err){console.log(error(err.message));}const隐藏在{}但是constfoo;try{foo=bar[global.name].foofoo[global.name2];}catch(err){console.log(error(err.me

python - python中的嵌套try语句?

有没有更好的方法来做以下事情:try:a.method1()exceptAttributeError:try:a.method2()exceptAttributeError:try:a.method3()exceptAttributeError:raise它看起来很讨厌,我宁愿不这样做:ifhasattr(a,'method1'):a.method1()elseifhasattr(a,'method2'):a.method2()elseifhasattr(a,'method3'):a.method3()else:raiseAttributeError保持最大效率。

ruby - OpenSSL AES-256-CBC 加密错误, "wrong final block length" ruby

使用Ruby1.8.6。我正在编写一个基本服务器,它回显客户端发送的消息的加密版本,以了解Ruby中对称加密的实现。该程序旨在接受套接字连接,共享其key,然后加密接收到的数据,然后再将其发送回客户端程序。然后客户端使用共享key解密消息,显示回显消息。我遇到的问题是返回消息导致“错误的最终block长度(OpenSSL::CipherError)”。进一步检查问题,删除decrypted允许我的客户端程序解密消息,但在末尾添加额外的字符或银行空格。我知道这是因为final关键字删除了额外的填充以允许CBC模式的16位block加密/解密,但我无法弄清楚如何使工作正常。这是简化的服务器

c# - IDisposable:是否有必要在 finally {} 上检查 null?

在您在网络上找到的大多数明确不使用“使用”的示例中,模式类似于:SqlConnectionc=newSqlConnection(@"...");try{c.Open();...}finally{if(c!=null)//如果您使用“using”并查看生成的IL代码,您可以看到它生成了null的检查L_0024:ldloc.1L_0025:ldnullL_0026:ceqL_0028:stloc.sCS$4$0000L_002a:ldloc.sCS$4$0000L_002c:brtrue.sL_0035L_002e:ldloc.1L_002f:callvirtinstancevoid[m

php - 将 Try/catch 与 Do/While 结合使用

这更像是一个概念性问题。将do/while循环与try/catch混合使用是否可以接受/良好的编程?例如:';return0;}catch(Exception$e){return1;}}functionbar(){try{echo'DOBARSTUFF';return0;}catch(Exception$e){return1;}}?>我问的原因是我在某处读到混合两者是不好的做法。您应该创建自己的异常并“抛出”它们。但这不是有点矫枉过正吗?编辑:为了解释这个问题出现的场景,想象一个必须遵循一条线的机器人。机器人每次迈出一步时都会计算其位置(X位置、Y位置、Z位置和“姿势”位置)并将信息发

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 - 将事物声明为 final 会加速 Eclipse 代码分析和编译吗?

我想知道使代码更明确是否有助于Eclipse更快地分析它。例如,如果我将一个类声明为final,理论上代码分析器在计算类型层次结构时可以跳过搜索其后代。那么,它真的能加快速度吗? 最佳答案 智能分析工具可能会利用final关键字,但我认为分析是在类层次结构中自下而上完成的,因为父类(superclass)无论如何都不需要关心子类。但是,由于利用了某些编译器优化,使用final确实会在一定程度上提高运行时性能。不过这是微观优化;虽然在适当的时候使用final是一个很好的做法,但与优化程序架构相比,性能提升不会很大。

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

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