同级异常的处理

今天做项目遇到异常的运用,orderexception 和VCException 处于 同级异常,继承GeneralBMEException在返回的时候信息报错

com.huawei.bme.order.common.OrderException incompatible with com.huawei.ngin.common.bmp.commons.exception.VCException; nested exception is:
 java.lang.ClassCastException: com.huawei.bme.order.common.OrderException incompatible with com.huawei.ngin.common.bmp.commons.exception.VCException

,现在修改代码在edr的aop中对所有的方法进行捕获异常并抛出。

 

           VCException vcException = new VCException(Constant.BMP_OTHER_ERROR);
            GeneralBMEException ge = null;
           
            if (e instanceof GeneralBMEException)
            {
                ge = (GeneralBMEException) e;
            }
            else
            {
                ge = new GeneralBMEException(e);
            }
            vcException.setErrMessage(ge.getMessage());
           
            throw vcException;

 

### C++ 异常处理机制概述 C++ 的异常处理提供了一种结构化的错误管理方式,能够增强程序的健壮性和可靠性。这种机制主要依赖 `try`、`catch` 和 `throw` 这三个关键字来实现[^2]。 #### Try 块的作用 Try 块用来包裹那些有可能会触发异常操作的部分代码。其作用是在其中检测到任何未被正常处理的问题时立即中断当前流程并转移控制权给相应的 Catch 处理逻辑: ```cpp try { // 可能发生异常的操作 } ``` #### Throw 语句的功能 Throw 用于显式地抛出一个特定类型的异常实例,这通常是由于遇到了某种预期之外的情况或是业务逻辑上的错误条件所引起的。一旦执行了 throw,则后续同级范围内的所有指令都将不再被执行直到找到匹配的 catch 子句为止: ```cpp if (file.fail()) { throw std::runtime_error("Failed to open file"); } ``` #### Catch 子句的应用 Catch 接收由前面 try 中产生的异常对象作为参数,并对其进行适当处置。可以根据实际需求编写多个不同签名形式(即接受不同类型参数)的 catch 来分别应对各种可能出现的情形。值得注意的是,默认情况下每个 catch 都只负责捕捉一次来自最近一层嵌套 try 内部发出的东西;如果希望跨越多层调用栈向上查找合适的处理器的话就需要借助 rethrow 功能了: ```cpp catch(const std::exception& e){ std::cerr << "Caught exception: " << e.what() << '\n'; } catch(...) { // 捕捉未知类型异常 std::cerr << "Unknown error occurred.\n"; } ``` 此外,在某些特殊场景下还可以考虑使用带有 noexcept 规范说明符的方法声明,表明该方法承诺不会主动引发新的异常事件从而简化调用方对于潜在风险点的关注程度[^5]。 最后需要注意的一点是虽然异常处理确实有助于提升应用程序的整体质量水平,但也并非毫无代价——频繁地创建销毁临时对象以及额外增加一层间接寻址都会或多或少影响最终性能表现,因此建议开发者们务必合理评估具体应用场景后再做抉择[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值