A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面是自定义异常教程的代码

class FuShuException extends Exception
{
        private int value;

        FuShuException(String msg,int value)
        {
                super(msg);       
                this.value=value;
        }
        public int getValue()
        {
                return value;
        }
}

class Demo
{
        int div(int a,int b)  throws FuShuException
        {
                if (b<0)
                        throw new FuShuException("出现除数是负数情况!",b);
                return a/b;
        }
}

class ExceptionDemo2
{
        public static void main(String[] args)
        {
                Demo d=new Demo();
                try
                {
                        int x=d.div(4,-1);
                        System.out.println("x="+x);       
                }
                catch (FuShuException e)
                {
                        System.out.println(e.toString());       
                        System.out.println(e.getMessage());       
                        System.out.println(e.getLocalizedMessage());
                        System.out.println("出现负数:"+e.getValue());       
                }               
                        System.out.println("over!");       
        }
}

打印结果显示System.out.println(e.getMessage());       
                     System.out.println(e.getLocalizedMessage());两者返回结果相同,只是我还是想知道两者有区别吗?

因为API文档内容说:
super(msg);        也就是父类Exception的构造方法Exception(String message) 构造带指定详细消息的新异常!也就是可以将自己定义的信息传入FuShuException,但是传入之后,哪个方法可以显示出来?

toString()方法返回
此对象的类的 name
": "(冒号和一个空格)
调用此对象 getLocalizedMessage() 方法的结果


getLocalizedMessage()方法返回 Exception的本地化描述。

getMessage()方法返回 Exception的详细消息字符串。

老师经常使用toString()和getMessage()方法,其实toString()用的也是getLocalizedMessage()方法,上面有解释。
getLocalizedMessage()方法和getMessage()方法两者的结果总是相同吗?


2 个回复

倒序浏览
赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报
犀利  犀利  犀利  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马