如何解决Java异常显式转换与隐式转换
请看这段代码:-
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/tailwindcss@1.8.13/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行将已检查的异常包装为未检查的异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。