黑马程序员技术交流社区

标题: 自定义异常类和一般的函数调用有什么区别? [打印本页]

作者: 何家旺    时间: 2013-1-26 00:01
标题: 自定义异常类和一般的函数调用有什么区别?
class FuShuException extends Exception
{
        private int value;
        FuShuException()
        {
                super();
        }
        FuShuException(String msg,int value)
        {
                super(msg);
                this.value = value;
        }
        public int getValue()
        {
                return value;
        }
}
class memo
{
        int div(int a,int b)throws FuShuException
        {
                if(b<0)
                        throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);
                //手动通过throw关键字抛出一个自定义异常对象。
                return a/b;
        }
}
class  jh
{
        public static void main(String[] args)
        {
                memo d = new memo();
                try
                {
                        int x = d.div(4,2);
                        System.out.println("x="+x);               
                }
                catch (FuShuException e)
                {
                        System.out.println(e.toString());
                        System.out.println("错误的负数是:"+e.getValue());
                }
                System.out.println("over");
        }
}

这个throw抛出和常规的return返回有什么区别吗?或者说这个throw可以用return返回调用吗?
作者: 冷延冰    时间: 2013-1-26 00:49
异常主要是程序运行出现不合法的操作或数据的时候抛出的错误,一般分为Error和Exception,Error直接不可操作处理,Exception可以对异常进行处理或抛出
return主要是程序运行返回的结果
作者: 贾文泽    时间: 2013-1-26 09:42
楼主的想法或许可以这样理解,当异常发生时,可以抛给当前函数的调用者,让调用者对异常进行处理,而一个函数中的return语句也是给这个函数的调用者返回一个资源,但是,所有的异常都属于throwable体系中,可抛性是这个体系独有的特点,抛出的异常可以用try/catch进行捕获处理,那如果用return返回异常对象那调用者应该怎么接收,无法有针对性的捕获便不能对异常做出针对性的处理,所以说,异常只能抛出,不能返回
作者: 何家旺    时间: 2013-1-26 10:01
IC-月辰 发表于 2013-1-26 09:42
楼主的想法或许可以这样理解,当异常发生时,可以抛给当前函数的调用者,让调用者对异常进行处理,而一个函 ...

直接调用异常里面的函数火车参数不行吗?异常类接收的不也是对应的函数或者参数吗?





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