java - 在 Java 中创建一个方法,该方法将链接到其他方法,并在链中的前一个方法抛出异常时调用fail()?

标签 java generics chaining

这就是我想要实现的目标。我正在使用 Mockito 进行 Java 单元测试。我想为我的项目创建一个名为 orFailIfExceptionThrown() 的通用方法,我可以链接到测试中的任何方法调用,基本上只需让它调用 fail("抛出了意外的异常", e) 在方法内。我对我是否应该这样做不感兴趣,因为我可以看到为什么我应该或不应该这样做的两面。我只是对从纯 Java 学习的角度来看如何做到这一点感兴趣。

最佳答案

以下是您不能做的事情,以及更好的替代方案:

method().failOnExcept();     // BAD: as soon as method() terminates unexpectedly
                             // failOnExcept() cannot be called - instead, control flow
                             // shifts to a catch block (error handling) or the caller
                             // of the method (if error handling failed/re-throws)
failOnExcept(() -> method()) // GOOD: we attempt to try method(); if it fails,
                             // failOnExcept() will handle it somehow

I'm not thaaaat interested in whether I should be doing this, as I can see both sides of why I should or should not do this. I'm just interested in how it could be done, from a pure Java learning standpoint.

考虑到这一点,我不会在这里争论替代方案的优点 - 只需知道我们不这样做的主要原因是因为它无法完成。

关于java - 在 Java 中创建一个方法,该方法将链接到其他方法,并在链中的前一个方法抛出异常时调用fail()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864344/

相关文章:

java - Spring RestTemplate POST请求以及URL编码数据

Java-声明新的泛型集时出现意外的类型错误

java - 使用 Hibernate 获取通用对象

java - <?扩展类> 和 <? Java 中的 super Class> - 为什么它会这样工作?

ruby - 这个怎么写比较好? Ruby Sequel 链接或

javascript - 使用 lodash 链接 curry 函数

java - array.sort 如何处理多维数组?

java - 如何延迟所有tomcat服务器请求

java - 方法链接的优点和缺点以及用对象本身替换所有 void 返回参数的可能性

java - 如何使用Java导出Hbase表?