Class.forName调用的等效项,无异常处理

时间:2016-09-18 19:13:01

标签: java spring class exception-handling classnotfoundexception

我想知道方法Class.forName(className)上是否有“方法包装器”,如果选中ClassNotFoundException,则会抛出未经检查的异常。

我的问题是在lambda体内处理这些类型的异常。它看起来太邋::

definition -> {
    new Thread(() -> {
        try {
            context.getBean(Class.forName(definition.getBeanClassName()));
            ...
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }).start();
});

或者我必须自己编写?

提前致谢。

2 个答案:

答案 0 :(得分:4)

首先,关于风格的说明。如果lambda不止一个语句,你应该认真考虑将它作为一种方法。这实际上有助于从可重用性,可维护性和可调试性的角度出发。

要回答你的问题,不,没有这样的包装器作为核心Java的一部分存在。编写自己的(在命名方法中)不应该那么痛苦。

答案 1 :(得分:1)

Spring知道Class.forName方法是IllegalArgumentException的等效方法,但如果无法找到类,则会抛出{{1}}。