草庐IT

catch-safeguarding

全部标签

java - 检查一个字符串是否可以在没有 try-catch 的情况下解析为 Long?

Long.parseLong("string")如果字符串无法解析为long,则会引发错误。有没有办法比使用try-catch更快地验证字符串?谢谢 最佳答案 您可以创建相当复杂的正则表达式,但这并不值得。在这里使用异常是绝对正常的。这是自然的异常(exception)情况:您假设字符串中有一个整数,但实际上还有其他东西。应该抛出异常并正确处理。如果您查看parseLong代码,您会发现有许多不同的验证和操作。如果你想在解析之前做所有这些事情,它会降低性能(如果我们正在谈论解析数百万个数字,否则没关系)。因此,如果你真的需要通过避免

java - 使用 try/catch 进行最终变量赋值

因为我相信这是一种很好的编程习惯,所以我将所有(本地或实例)变量设为final,如果它们打算只编写一次的话。但是,我注意到,当变量赋值可能引发异常时,您不能将所述变量设为final:finalintx;try{x=Integer.parseInt("someinput");}catch(NumberFormatExceptione){x=42;//Compilererror:Thefinallocalvariablexmayalreadyhavebeenassigned}有没有办法在不使用临时变量的情况下做到这一点?(或者这不是最终修饰符的正确位置吗?) 最

使用 try catch block 时的 Spring @Transactional 注释

如果我们在带有@Transactional注解的方法中捕获到异常,如果发生异常会回滚吗?@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Throwable.class)publicvoidyearEndProcess(){try{//tryblock}catch(Throwablethrowable){//catchblock}} 最佳答案 例如classA{@TransactionalpublicResultdoStuff(){R

Flutter 和 Dart 尝试 catch——catch 不会触发

鉴于下面的简码示例:...print("1parsingstuff");Listsubjectjson;try{subjectjson=json.decode(response.body);}onExceptioncatch(_){print("throwingnewerror");throwException("Erroronserver");}print("2parsingstuff");...我会期望在解码失败时执行catchblock。但是,当返回错误响应时,终端会显示异常,并且不会触发catch和继续代码...flutter:1parsingstuff[VERBOSE-2:u

java - 自动记录在 catch block 中,仅当注释异常变量时,对于 Java 或 Kotlin

我想为Java或Kotlin执行此操作:给出下面的代码try{...}catch(@AutoLoge:Exception){//position1}在构建期间自动在位置1添加一条日志记录语句。我可以使用AspectJ为catchblock添加代码(适用于Java和Kotlin),但它适用于所有catchblock,我无法检查@AutoLog注释是否存在,只有在存在时才添加代码。所以我想我必须求助于Java的APT(注释处理工具)(或Kotlin的KAPT)?顺便说一句,我在这里找到了一个KAPT代码生成示例:https://github.com/JetBrains/kotlin-exa

c++ - 在 C++ 中,使用异常和 try/catch 而不是仅仅返回错误代码有什么好处?

我已经编写C和C++很长时间了,到目前为止,我从未使用过异常和try/catch。使用它而不是让函数返回错误代码有什么好处? 最佳答案 可能很明显的一点-开发人员可以忽略(或不知道)您的返回状态并继续幸福地不知道发生了什么事。需要以某种方式确认异常-如果不主动采取措施,就不能默默地忽略它。 关于c++-在C++中,使用异常和try/catch而不是仅仅返回错误代码有什么好处?,我们在StackOverflow上找到一个类似的问题: https://stacko

c++ - 如何释放 try-catch block 中的内存?

我希望有一个简单的问题-当异常发生时,如何在tryblock中分配一个空闲内存?考虑以下代码:try{char*heap=newchar[50];//letexceptionoccurheredelete[]heap;}catch(...){cout如何在分配堆后释放内存并在调用delete[]heap之前发生异常?是否有规则不在这些try..catchblock中分配堆内存? 最佳答案 学习RAII习语(资源获取就是初始化)!参见例如WikipediaarticleonRAII.RAII只是一般概念。它被用于例如在C++标准库的s

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++ - 如何在 Catch 框架中使用浮点容差?

我正在使用Catch测试框架。在introductoryblogpost作者提到了以下特点:Floatingpointtolerancessupportedinaneasytouseway我找不到任何有关如何执行此操作的文档。这在Catch中是如何完成的? 最佳答案 这很简单。有一个类叫Approx这使您可以以非常易读的方式进行此测试:#includeTEST_CASE("demo/approx","Approxdemo"){doublea=1.0;doubleb=a+std::numeric_limits::epsilon();R

C++ : Catch a divide by zero error

这是一段简单的代码,其中发生了被零除。我试图捕获它:#includeintmain(intargc,char*argv[]){intDividend=10;intDivisor=0;try{std::cout但应用程序无论如何都会崩溃(即使我设置了MinGW的选项-fexceptions)。是否有可能捕捉到这样的异常(我理解的不是C++异常,而是FPU异常)?我知道我可以检查除数before除数,但我假设,因为除以零很少见(至少在我的应用程序中),它会更多尝试除法(并在发生错误时捕获错误)比在除法之前每次测试除数时有效。我正在一台WindowsXP计算机上进行这些测试,但希望让它跨平台