?????????return???????????????????????finally???????return????????finally??return??????????????妫�???finally??泻???????

?????????finally???娌�?????return????????????return?????????try??catch??????????????械??????????

????1??return????????????????巍?

????2??return??????try??catch???娑�?????

????3??return??????try?????????????

????4??return??????catch?????????????

???????????????????????????????械?????????????

??????1????????????械?try???????????????????梅???2???????????????test0_1????????????校?????2??4??????械?????????????2????

??????2????????????械?catch??????????????????????????泻??????????????????4???????????????械?test0?????????????????校??????????4??

??????3????????????械?try??catch????????????泻???????????????1?????????????test0_2?????????????梅???1????

????????????????

public class Test {

    public static void main(String[] args) {
        System.out.println("=============test1==================");
        System.out.println(test1());
        System.out.println("===============================");

        System.out.println("=============test1_1==================");
        System.out.println(test1_1());
        System.out.println("===============================");

        System.out.println(" ============test2===================");
        System.out.println(test2());
        System.out.println("===============================");

        System.out.println(" ============test2_1===================");
        System.out.println(test2_1());
        System.out.println("===============================");

        System.out.println(" ============test3===================");
        System.out.println(test3());
        System.out.println("===============================");

        System.out.println(" ============test3_1===================");
        System.out.println(test3_1());
        System.out.println("===============================");
    }

    public static String test0() {
     String a;
     int b;
     try{
      b = 8/0;
     }catch(Exception e){
      return null;
     }
     a = String.valueOf(b);
     return a+b;
    }
 
    public static String test0_1() {
     String a;
     int b;
     try{
      b = 8/0;
      a = String.valueOf(b);
         return a+b;
     }catch(Exception e){
      return null;
     }
     //return a+b;
    }
  
    public static String test0_2() {
     String a;
     int b=0;
     try{
      b = 8/0;
     }catch(Exception e){
     }
     a = String.valueOf(b);
     return a;
    }
  
    public static String test1() {
        String a = "in try";
        int n = -1;
        try{
            return a+n; //???????????????finally
        } catch ( Exception e ) {

        } finally {
         //??String??int????????效
            a = "in finally";
            n = 123;
            System.out.println("do finally");
        }
        return a; //???????
    }  //???????return???????????????????????finally???????return????????finally

    public static String test1_1() {
        String a = "in try";

        try{
            return a;
        } catch ( Exception e ) {

        } finally { //??eclpise????????????finally???娌�??????return???
            a = "in finally";
            System.out.println("do finally");
            return a; //???????eclipse?????????
        }
    }

    public static int test2() {
        int a = 1;

        try{
            return a;
        } catch ( Exception e ) {

        } finally {
            a = 2;
            System.out.println("do finally");
        }

        return a;
    } //???????finally?????????效?????????a=1

    public static int test2_1() {
        int a = 1;

        try{
            return a;
        } catch ( Exception e ) {

        } finally {
            a = 2;
            System.out.println("do finally");
            return a;
        }
    } //???????a?finally????????a=2

    //Helper??????????????????
    static class Helper {
        int a;

        public String toString() {
            return String.valueOf(a);
        }
    }
  
    public static Helper test3() {
        Helper h = new Helper();
        h.a = 1;

        try{
            return h;
        } catch ( Exception e ) {

        } finally {
            h.a = 2; //??h.a???????????!!
              //?????try???娣�??????????????????????????? ????????
            System.out.println("do finally");
        }
      
        return h; //??????????
    }

    public static Helper test3_1() {
        Helper h = new Helper();
        h.a = 1;

        try{
            return h;
        } catch ( Exception e ) {

        } finally {
            h.a = 2; //????a=2????????????
            System.out.println("do finally");
            return h;
        }
    }


    /**
     * ???
     * return???finally???娌�?????return???????????????????try??catch????
     *
     */
  
}