问题描述
请看这段代码:-
public <T> T call(final Callable<T> callable) {
try {
return callable.call();
} catch (Exception exception) {
if (exception instanceof RuntimeException) {
throw (RuntimeException) exception; // Line 6
} else {
throw new RuntimeException(exception); // Line 8
}
}
}
- 在第6行执行
(RuntimeException) exception
有什么需要? - 第6行v / s第8行引发的异常之间有什么区别?
解决方法
其中的代码将已检查的异常转换为未检查的异常。在Java中,必须使用<link href="https://unpkg.com/[email protected]/dist/tailwind.min.css" rel="stylesheet" />
<div class="md:flex">
<div class="flex justify-center items-center">
<img src="https://lastfm.freetls.fastly.net/i/u/270x205/92a6e1da897a4be19962d251717fabd7.jpg" class="rounded-full w-32 h-32 md:w-48 md:h-48 xl:w-64 xl:h-64" />
</div>
<div class="md:ml-20">
<h3 class="text-xl leading-7 font-semibold">
Header 1
</h3>
<p class="mt-2 leading-6">
Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren,no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,no sea takimata sanctus est Lorem ipsum dolor sit amet.
</p>
</div>
</div>
关键字在方法上声明已检查的异常,而不必在方法上声明未检查的异常。 throws
是所有异常的基类,而Exception
(是RuntimeException
的子类)是所有未检查的异常的基类。
第6行上的代码使编译器满意。由于Exception
是已检查的异常,通过将其强制转换为Exception
,编译器将不会强制使用RuntimeException
在方法中声明的异常。第8行将已检查的异常包装为未检查的异常。