我想知道方法Class.forName(className)
上是否有“方法包装器”,如果选中ClassNotFoundException
,则会抛出未经检查的异常。
我的问题是在lambda体内处理这些类型的异常。它看起来太邋::
definition -> {
new Thread(() -> {
try {
context.getBean(Class.forName(definition.getBeanClassName()));
...
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}).start();
});
或者我必须自己编写?
提前致谢。
答案 0 :(得分:4)
首先,关于风格的说明。如果lambda不止一个语句,你应该认真考虑将它作为一种方法。这实际上有助于从可重用性,可维护性和可调试性的角度出发。
要回答你的问题,不,没有这样的包装器作为核心Java的一部分存在。编写自己的(在命名方法中)不应该那么痛苦。
答案 1 :(得分:1)
Spring知道Class.forName
方法是IllegalArgumentException
的等效方法,但如果无法找到类,则会抛出{{1}}。