java - Assert.notThrown 可以在抛出异常时指定一条消息

标签 java spring assert assertions

我在我的项目中使用 Spring Asserts 并希望使用它们(或者可能是其他一些断言)来检查在某些情况下是否抛出异常,例如我有以下代码:

//throws PatternSyntaxException in case if pattern is invalid

Pattern.compile(freeUsersRegex);
Pattern.compile(deletedUsersRegex);
Pattern.compile(movedUsersReges);
...

我想指定一条消息,以防正则表达式无效(每次都不同),以向用户显示哪个正则表达式无效,如下所示:

    try {
        Pattern.compile(freeUsersRegex);
    } catch (PatternSyntaxException e ) {
        throw new IllegalArgumentException("Specify valid regular expression for Free users group");
    }

    try {
        Pattern.compile(deletedUsersRegex);
    } catch (PatternSyntaxException e ) {
        throw new IllegalArgumentException("Specify valid regular expression for Deleted users group");
    }
    ...

但是为每个字符串编写 try/catch 不是很方便,用这样的代码替换上面的代码会很酷:

Assert.isNotThrown(Pattern.compile(freeUsersRegex), PatternSyntaxException.class, "Specify valid regular expression for Free users group");

Assert.isNotThrown(Pattern.compile(deletedUsersRegex), PatternSyntaxException.class, "Specify valid regular expression for Deleted users group");

我在Spring中寻找过这样的Assert,但没有找到。也许其他图书馆也有类似的东西?

谢谢

安德烈

最佳答案

为什么不简单地重用以下类型的实用方法:

public static Pattern createPattern(String regex, String type){
    try {
        return Pattern.compile(regex);
    } catch (PatternSyntaxException e ) {
        throw new IllegalArgumentException(
            String.format("Specify valid regular expression for %s", type)
        );
    }
}

关于java - Assert.notThrown 可以在抛出异常时指定一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38099971/

相关文章:

java - Android 斐波那契基准/深度递归

java - 如何重现磁盘耗尽错误?

java - 无法使用 Oracle 数据库连接在 Spring 中加载配置类

java - 如何查找/更改 hibernate 查询

javascript - 断言测试 2 个数组 deepEqual

python - 为什么断言没有大量使用?

java - Java中的多线程: how to transfer funds between accounts correctly?

java - 在 session 到期时关闭弹出窗口

java - 在 JDBC 或 Spring JDBC 中使用 REF CURSOR 的替代方案?

c++ - static_assert 有什么作用,你会用它做什么?