Java异常显式转换与隐式转换
遇到以下代码:-Java异常显式转换与隐式转换,java,exception,runtimeexception,Java,Exception,Runtimeexception,遇到以下代码:- public <T> T call(final Callable<T> callable) { try { return callable.call(); } catch (Exception exception) { if (exception instanceof RuntimeException) { throw (RuntimeException) exception;
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
}
}
}
public T调用(最终可调用){
试一试{
返回callable.call();
}捕获(异常){
if(运行时异常的异常实例){
抛出(RuntimeException)异常;//第6行
}否则{
抛出新的RuntimeException(异常);//第8行
}
}
}
(运行时异常)异常
需要什么该代码用于将选中的异常转换为未选中的异常。在Java中,必须使用
throws
关键字在方法上声明选中的异常,而不需要在方法上声明未选中的异常<代码>异常是所有异常的基类,运行时异常
(是异常
的子类)是所有未检查异常的基类
第6行的代码是为了让编译器满意。由于
Exception
是一个选中的异常,通过将其强制转换为RuntimeException
,编译器不会使用抛出的强制在方法上声明异常。第8行将已检查的异常包装为未检查的异常。(您最好将代码编写为}catch(RuntimeException exc){throw exc;}catch(exception exc){throw new RuntimeException(exc);}
。