黑马程序员技术交流社区

标题: 返回值,写在try,catch中,不行吗 [打印本页]

作者: 高阳    时间: 2013-1-5 15:41
标题: 返回值,写在try,catch中,不行吗
        public static void main(String[] args) {
                //创建x,y,并赋值为int类型
                int x=5;
                int y=0;
                //调用fun()方法返回类型为int
                int i=fun(x,y);
                //输出i
                System.out.println(i);
        }

        private static int fun(int i,int y) {
                //创建一个变量s
                int s=21;
                //fianally,只有在try,catch时能时候用
                try{
                        System.out.println("嘿嘿");
                }
                catch (Exception e){
                        return s;
                }
                finally{
                        //给S重新赋值
                        s=12;
                        System.out.println("执行fianally");
                }
               
        }
在catch中已经返回值了,为什么还要有返回,不然会报错,这个类没什么实际意义,只是一个测试类,以前我明白,现在真忘了
作者: 刘子义    时间: 2013-1-5 15:53
fun方法需要一个int型的返回值,目前只有catch块里才有return语句,但是程序不一定走进catch代码块里。
解决方法是你在try里或者finally里也写一句return。
不过正确的编程习惯应该是每个方法只有一个返回点,通过不同的逻辑设置不同的返回值。
作者: 高阳    时间: 2013-1-5 16:27
刘子义 发表于 2013-1-5 15:53
fun方法需要一个int型的返回值,目前只有catch块里才有return语句,但是程序不一定走进catch代码块里。
解 ...

谢谢,也就是说程序肯定会走的里面放return就没问题,可能走的里面放return是不行的是吗
作者: 刘子义    时间: 2013-1-5 17:32
gaoyang525445 发表于 2013-1-5 16:27
谢谢,也就是说程序肯定会走的里面放return就没问题,可能走的里面放return是不行的是吗 ...

嗯,所以最好把return写在方法体的最后,而且尽量保证一个方法里只存在一个return语句,这样代码清晰便于维护
作者: 黄文伯    时间: 2013-1-5 18:12
学习了。。。。。。。
作者: 余善航    时间: 2013-1-5 21:32
        private static int fun(int i,int y) {
        //创建一个变量s
        int s=21;
        //fianally,只有在try,catch时能时候用
        try{
                System.out.println("嘿嘿");
        }
        catch (Exception e){
                return s;
        }
        finally{
                //给S重新赋值
                s=12;
                System.out.println("执行fianally");
        }
        return s;
        }



返回值写在外面是可以的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2