下面是自定义异常教程的代码
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()方法两者的结果总是相同吗?
|
|