首页 > 学院 > 开发设计 > 正文

"finally block does not complete normally"警告解决

2019-11-06 07:18:29
字体:
来源:转载
供稿:网友

java里面不是可以保证finally一定会执行的么,为什么不可以在finally块做return?

细细看道来:debug一下这个函数,就会惊讶的发现, 里面抛出的异常会被finally吃掉。 这也就是为什么会被警告的原因。

@SupPRessWarnings( "finally" )private boolean isReturnWithinFinally(){	try {		if ( true )			throw new RuntimeException();	} finally {		return(true); /* This hides the exception */	}}那么,下面这样会不会ok呢?先把异常处理

public static void main( String[] args ){	try{		throw new RuntimeException();	}catch ( Exception e ) {		/* */	}	finally {		return;	}}结论是:依旧不行。java里面的异常分为可不获和不可捕获两类,即便使用到catch块,也会导致非捕获的错误被finally吃掉。因此,return一定要放到finally外面。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表