关于JAVA中finally的问题....
publicclassLostMessage{voidw()throwsImportantException{thrownewImportantException();}...
public class LostMessage
{
void w() throws ImportantException{
throw new ImportantException();
}
void dispose() throws NormalException{
throw new NormalException();
}
public static void main (String[] args) throws Exception{
LostMessage lm=new LostMessage();
try{
lm.w();
}finally{
lm.dispose();
}
}
}
class ImportantException extends Exception{
public String toString(){
return "An important exception!";
}
}
class NormalException extends Exception{
public String toString(){
return "A normal exception!";
}
}
为什么这里ImportantException的异常信息没显示出来..
要详细解答吖... 展开
{
void w() throws ImportantException{
throw new ImportantException();
}
void dispose() throws NormalException{
throw new NormalException();
}
public static void main (String[] args) throws Exception{
LostMessage lm=new LostMessage();
try{
lm.w();
}finally{
lm.dispose();
}
}
}
class ImportantException extends Exception{
public String toString(){
return "An important exception!";
}
}
class NormalException extends Exception{
public String toString(){
return "A normal exception!";
}
}
为什么这里ImportantException的异常信息没显示出来..
要详细解答吖... 展开
2个回答
展开全部
首先finally 结构使代码总会执行,而不管有无异常发生
其次try, catch, finally中fianlly的throw/return的级别最高,
举例来说
public class Finally{
public static void main(String[] args)
{
Finally e=new Finally();
System.out.println(e.tryThis());
}
public void thooo() throws Exception {
throw new Exception();
}
public int tryThis()
{
try{
System.out.println("1");
thooo();
return 1;
}catch(Exception ex){
System.out.println("2");
return 2;
}finally{
System.out.println("4");
return 3;
}
}
}
上面这个程序输出的结果是
1
2
4
3
看到么?try和catch的return根本没有作用,因为finally的代码优先级最高!
不过像以上你的应用是不合理的,通常在finally语句中是进行资源的清除工作。如关闭打开的文件和通讯句柄,或者数据库链接等。
如果finally里面没有return或者exception,那么你的catch语句的exception 或者 return 语句将被如期执行了。
哎~~~10分好累
其次try, catch, finally中fianlly的throw/return的级别最高,
举例来说
public class Finally{
public static void main(String[] args)
{
Finally e=new Finally();
System.out.println(e.tryThis());
}
public void thooo() throws Exception {
throw new Exception();
}
public int tryThis()
{
try{
System.out.println("1");
thooo();
return 1;
}catch(Exception ex){
System.out.println("2");
return 2;
}finally{
System.out.println("4");
return 3;
}
}
}
上面这个程序输出的结果是
1
2
4
3
看到么?try和catch的return根本没有作用,因为finally的代码优先级最高!
不过像以上你的应用是不合理的,通常在finally语句中是进行资源的清除工作。如关闭打开的文件和通讯句柄,或者数据库链接等。
如果finally里面没有return或者exception,那么你的catch语句的exception 或者 return 语句将被如期执行了。
哎~~~10分好累
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询