java捕获异常

代码片段展示了Java中处理保存和获取模型的异常情况,以及插入或更新服务的逻辑。在保存模型时,针对不同异常类型返回不同的错误信息。获取模型时,成功则直接返回结果。在插入或更新服务中,首先检查ID是否存在,然后验证事件名和事件标识符,最后执行相应的服务并返回操作结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public Result……{

    try {
        return Result.getServiceError("保存模型失败");
        return Result.getSuccessResult("保存模型成功");
    } catch (IllegalArgumentException e) {
        logger.error("保存模型入参 error{}", e.getMessage());
        return Result.getParamException(e.getMessage());
    } catch (BusinessException e) {
        logger.error("保存模型参 error{}",e.getMessage());
        return Result.getServiceError(e.getMessage());
    } catch (Exception e) {
        logger.error("保存模型异常,异常原因: {}", e.getMessage());
        return Result.getServiceError("模型标识符不允许重复");
    }

}

上面这段代码:可以用int来接受,然后进行判断。 

@ApiOperation("根据ID获取模型")
    @GetMapping("/model/{id}")
    public Result<ModelVO> getModelById(@PathVariable("id") Long id) {
        try {
            logger.info("获取模型入参,ID: {}", id);
            ModelVO modelVO = modelService.getModelById(id);
            return Result.getSuccessResult(modelVO);
        } catch (Exception e) {
            logger.error("获取模型异常,异常原因: {}", e.getMessage());
            return Result.getServiceError("获取模型异常");
        }
    }

上面这段代码:可以成功后直接返回值 

    @RequestMapping("insertOrUpdate")
    @ResponseBody
    public ResultData insertOrUpdate(@RequestBody ModelEventParam modelEventParam) {
        //新增服务
        if (modelEventParam.getId() == null) {
            ResultData addResult = modelEventService.saveEvent(modelEventParam);
            if (addResult.isSuccess()) {
                return ResultDataUtil.success(true);
            }
            return ResultDataUtil.fail(addResult.getErrMsg());
        }

        if(modelEventParam.getEventName() == ""){
            return ResultDataUtil.fail("请填写事件名!");
        }
        if(modelEventParam.getEventQualifier() == ""){
            return ResultDataUtil.fail("请填写事件标识符!");
        }


        //更新服务
        ResultData updateResult = modelEventService.updateEvent(modelEventParam);
        if (updateResult.isSuccess()) {
            return ResultDataUtil.success(true);
        }
        return ResultDataUtil.fail(updateResult.getErrMsg());
    }

上面这段代码:成功:

result.setSuccess(true);
return result;

失败:

return ResultDataUtil.fail("事件标识或者事件参数标识符重复");
### Java捕获异常并抛出 在 Java 编程中,`try-catch-finally` 结构用于处理可能出现的异常情况。当程序遇到错误时,可以通过 `throw` 和 `throws` 来管理这些异常。 #### 使用 `try-catch` 为了确保代码能够正常运行而不被未预期的错误打断,通常会在可能发生异常的地方包裹一层 `try-catch` 块: ```java try { // 可能引发异常的操作 } catch (SpecificException e) { // 处理特定类型的异常 } ``` 如果希望自定义异常消息或转换异常类型,则可以在 `catch` 子句内使用 `throw` 语句重新抛出一个新的异常对象[^1]。 #### 自定义异常类 创建自己的异常类可以帮助更精确地描述应用程序中的特殊状况。这通常是继承于 `Exception` 或者其子类实现的: ```java public class CustomException extends Exception { public CustomException(String message) { super(message); } } ``` #### 捕获异常后抛出自定义异常 下面的例子展示了如何在一个方法内部捕捉标准库提供的异常之后再抛出自定义异常实例给调用方知晓发生了什么问题: ```java public void someMethod() throws CustomException { try { // 执行某些操作可能会失败 int[] numbers = {1}; System.out.println(numbers[2]); // 数组越界访问 } catch (ArrayIndexOutOfBoundsException e) { // 将原始异常封装成新的异常传递出去 throw new CustomException("数组索引超出范围:" + e.getMessage()); } } ``` 在这个例子中,一旦检测到了数组下标越界的异常 (`ArrayIndexOutOfBoundsException`) ,就会立即终止当前流程并通过 `throw` 发送带有额外上下文信息的新异常给上层函数去处理[^3]。 对于那些不需要显式捕获就能由 JVM 默认机制来处置的情况(如 `RuntimeException`),虽然可以选择不加任何保护措施让它们自然触发中断应用流的行为;但从良好的编程实践角度出发还是建议尽可能采用 `try-catch` 方式来进行局部化的错误恢复尝试[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值