黑马程序员技术交流社区
标题:
关于toString
[打印本页]
作者:
Tinck
时间:
2014-5-11 00:40
标题:
关于toString
class FuShuException extends Exception //getMessage();
{
private int value;
private String message;
Throwable(String message)
{
this.message = message;
}
public String getMessage()
{
return message;
}
}
class Demo
{
int div(int a,int b)throws FuShuException
{
if(b<0)
throw new FuShuException("出现了除数是负数的情况------ / by fushu",b);//手动通过throw关键字抛出一个自定义异常对象。
return a/b;
}
}
class ExceptionDemo3
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x = d.div(4,-9);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println(e.toString());
//System.out.println("除数出现负数了");
System.out.println("错误的负数是:"+e.getValue());
}
System.out.println("over");
}
}
复制代码
为什么e.toString()调用了getMessage()?
作者:
张辉玉
时间:
2014-5-11 01:30
在你调用e.toString()之前就抛出了一个FuShuException 异常,这就需要一个FuShuException 对象e,而toString 是用来打印对象信息的,所以调用getMessage()来获取message字符串信息
作者:
Tinck
时间:
2014-5-11 12:52
终于想明白了
class fushu
{
private String message;
fushu(String message)
{
this.message=message;
}
public String getMessage()
{
return message;
}
}
class demo
{
public static void main(String[] args)
{
fushu f=new fushu("sasdas");
System.out.println(f.toString());
}
}
复制代码
如果这样toString是不会调用getMessage()的,必须先继承Throwable或Exception。Throwable中的toString覆盖了Object中的toString。
public String toString()
{
打印此对象的类的 name
打印": "(冒号和一个空格)
调用此对象 getLocalizedMessage()
{
对于不重写此方法的子类,默认实现返回与 getMessage() 相同的结果。
}
如果 getLocalizedMessage 返回 null,则只返回类名称。
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2