java中 try、catch、finally 执行顺序关系
2014-12-29 17:18
330 查看
1. finally 里 始终会被执行到, System.exit(0); 除这种被执行外。即使是发现了异常,如(3)中被注释的throw 异常,也会在抛异常前先执行finally.
2. 即使try中有return ,也是先执行 return 后面的语句完了之后,不立马return,而是去执行finally中的语句。
3. 当try中与finally里,同时出现return , 则只会返回 finally 中的return 结果。
4. finally中的值不能影响try中 即将返回的结果值。
以上对try中与finally中的结论,同样适用于catch 与 finally里,
1. finally 里 始终会被执行到, System.exit(0); 除这种被执行外。即使是发现了异常,如(3)中被注释的throw 异常,也会在抛异常前先执行finally.
2. 即使catch中有return ,也是先执行 return 后面的语句完了之后,不立马return,而是去执行finally中的语句。
3. 当catch中与finally里,同时出现return, 则只会返回 finally 中的return 结果。
4. finally中的值不能影响catch中 即将返回的结果值。
注意: 若finally中没有return 在 try或catch中有return ,那么在执行return 跟着语句之后,会把语句的结果新开辟一内存空间,直接把结果的存放此内存空间中。所以,finally中的值不能影响try或catch中即将return的结果
public static String getS(String s){
try {
s = "1";
return s; //执行到此处会把要返回的值保存,然后跳到finally中,s会被改变,但是返回的值仍是1
} catch (Exception e) {
e.printStackTrace();
}finally{
s = "2";
// return s; //若没注释 则回返回2
}
return s;//不会执行到
}
public class TestTry1
{
public static void main(String[] args) throws Exception{
System.out.println("client execute1 ------"+TestTry1());
}
public static Person TestTry1() throws Exception{
int i = 1;
try{
//throw new Exception();
//System.exit(0);
return new Person(++i,"try1"); //(1)
}catch(Exception e){
System.out.println(" catch run --------, this can not possible"); // (2)
//throw e ;
return new Person(i,"catch1"); // (3)
}finally{
++i;
new Person(i,"finally1"); // (4)
}
}
}
class Person
{
private int num = 0;
private String location ;
public Person(int num,String location){
this.num = num;
this.location = location;
System.out.println("------ "+location+" Person can execute---------- num="+num);
}
public String toString(){
return "{Person num=["+num+"]+ location=["+location+"]" ;
}
}
2. 即使try中有return ,也是先执行 return 后面的语句完了之后,不立马return,而是去执行finally中的语句。
3. 当try中与finally里,同时出现return , 则只会返回 finally 中的return 结果。
4. finally中的值不能影响try中 即将返回的结果值。
以上对try中与finally中的结论,同样适用于catch 与 finally里,
1. finally 里 始终会被执行到, System.exit(0); 除这种被执行外。即使是发现了异常,如(3)中被注释的throw 异常,也会在抛异常前先执行finally.
2. 即使catch中有return ,也是先执行 return 后面的语句完了之后,不立马return,而是去执行finally中的语句。
3. 当catch中与finally里,同时出现return, 则只会返回 finally 中的return 结果。
4. finally中的值不能影响catch中 即将返回的结果值。
注意: 若finally中没有return 在 try或catch中有return ,那么在执行return 跟着语句之后,会把语句的结果新开辟一内存空间,直接把结果的存放此内存空间中。所以,finally中的值不能影响try或catch中即将return的结果
public static String getS(String s){
try {
s = "1";
return s; //执行到此处会把要返回的值保存,然后跳到finally中,s会被改变,但是返回的值仍是1
} catch (Exception e) {
e.printStackTrace();
}finally{
s = "2";
// return s; //若没注释 则回返回2
}
return s;//不会执行到
}
public class TestTry1
{
public static void main(String[] args) throws Exception{
System.out.println("client execute1 ------"+TestTry1());
}
public static Person TestTry1() throws Exception{
int i = 1;
try{
//throw new Exception();
//System.exit(0);
return new Person(++i,"try1"); //(1)
}catch(Exception e){
System.out.println(" catch run --------, this can not possible"); // (2)
//throw e ;
return new Person(i,"catch1"); // (3)
}finally{
++i;
new Person(i,"finally1"); // (4)
}
}
}
class Person
{
private int num = 0;
private String location ;
public Person(int num,String location){
this.num = num;
this.location = location;
System.out.println("------ "+location+" Person can execute---------- num="+num);
}
public String toString(){
return "{Person num=["+num+"]+ location=["+location+"]" ;
}
}
相关文章推荐
- Java异常捕获之try-catch-finally-return的执行顺序
- java try、catch、finally及finally执行顺序详解
- Android面试之java基础try-catch-finally-return的执行先后顺序问题
- Java try catch finally的执行顺序
- java try、catch、finally及finally执行顺序详解
- Java异常处理机制以及try-catch-finally-return执行顺序
- java中的异常以及 try catch finally以及finally的执行顺序
- 【Java基础之finally和return】有return的情况下try catch finally的执行顺序
- Java异常捕获之try-catch-finally-return的执行顺序-转载
- 关于java中try catch finally的执行顺序
- java try catch finally的执行顺序
- try、catch、finally 执行顺序 及 return 关系浅谈一
- java 中 try catch finally 语句的执行顺序
- Java try catch finally的执行顺序
- Java try、catch、finally及finally执行顺序详解
- java Try/catch/finally 执行顺序
- Java try catch finally的执行顺序
- java中try{}catch{}和finally{}的执行顺序问题
- java中try catch finally与return的执行顺序
- JAVA中try、catch、finally的使用及finally执行顺序详解