当前位置: 首页 > 知识库问答 >
问题:

我们如何为同一例外情况提供不同的海关信息

郏兴贤
2023-03-14

因为这是第一次处理这种情况,所以询问哪种方法是最好的。

此处显示所有的数据完整性ViolationException,发送相同的错误消息

@Override
public boolean saveParam(ParamDto dto) throws ParamException 
{
    try 
    {
        return super.save(dto);
    }
    catch(DataIntegrityViolationException e)
    {
        throw new ParamException(ParamException.INTERNAL_SERVER_ERROR, messageSource.getMessage(CodeEnum.DUPLICATE_APP.getValue(), new Object[] { dto.getParamKey() }, Locale.ENGLISH));
    } 
    catch (GenericException ge) 
    {
        throw new ParamException(ge, ge.getRootCauseMessage());
    }
}

对于相同的异常,我们如何给出不同的海关消息。我们需要检查消息字符串吗?

这里有2种不同类型的异常下DataWellityViolationExc农田.

>

  • "错误:类型字符(1)的值太长"(id=172)"

    "错误:重复的键值违反了唯一约束"uk_param_key"\n详细信息:Key(param_key)=(Test1)已经存在。"

  • 共有1个答案

    孙梓
    2023-03-14

    一旦捕获到DataIntegrityViolationException异常,就可以使用getmostsspecificcause方法获取异常的实际原因。

    然后,您可以使用instanceof关键字检查异常是否属于特定类型,并相应地自定义消息。例如,MySQL JDBC驱动程序为不同类型的错误抛出MysqlDataTruncationMySQLIntegrityConstraintViolationException等。查看文档以查看数据库驱动程序引发的不同类型的异常。

    您还可以检查异常消息,并将其与预定义的消息进行比较,但这有点棘手,容易出错。

     类似资料:
    • 本文向大家介绍spring Profile如何为不同环境提供不同的配置支持,包括了spring Profile如何为不同环境提供不同的配置支持的使用技巧和注意事项,需要的朋友参考一下 说明 Profile为在不同环境下使用不同的配置提供了支持(开发环境下的配置和生产环境下的配置肯定是不同的, 例如, 数据库的配置) 。 在spring开发中用@Profile 注解使用来选择行配置系统属性。而在sp

    • 问题内容: 我想要两个相同模型的外键: 我收到如下错误: 字段“ example1”的访问器与相关字段“ Example.test_set”冲突。在“ example1”的定义中添加一个related_name参数。 问题答案: 尝试使用:

    • 问题内容: 我的gradle文件中设置了两种构建类型:debug和release。我希望能够为debug构建类型设置其他应用程序图标。有没有办法通过构建类型来实现此目的而又不涉及产品风味?build.gradle文件在下面。 问题答案: 弄清楚了。您需要做的是创建一个单独的src文件夹debug,其中包含不同的图标。例如,如果您的项目布局如下,并且启动器图标称为ic_launcher.png: 然

    • 我将json传递给ObjectMapper。JSON字符串如下所示: 我的类如下所示: 这种行为是意料之中的吗?如果是,有什么解决办法? 更新:添加了类描述。

    • 第二:这不是重复的。如在没有HTTPS的情况下,如何使用Javascript通过HTTP安全地发送密码?描述其他方法的问题,但不是具体的,当加密用于教育目的时,可以作为次要的东西。 作为课外一些Internet安全研究的一部分,我想创建一个使用用户配置文件并允许用户通过密码登录的网站。该网站不采取信用卡信息,不会持有敏感的个人信息,并不会,一般情况下,是一个值得去窃取个人信息的网站。为了这个问题的

    • 现在,我有下面的代码,它只是测试标准库中的< code>std::set_difference: 当我用Clang/GCC编译它时,我得到了输出: 更新我想实际使用的源代码案例(假设是我将要做的一些操作。因此,这些操作将按的顺序发生): 好吧,这看起来不错,它实际上对应于标准::set_difference,检查链接:但是当我选择MSVC时,我得到了不同的输出(检查链接:https://godbo