我的JAVA程序;
class MyException extends Exception
{
private int detail ; MyException(int a)
{
detail = a ;
} public String toString()
{
return "MyException["+detail+"]" ;
}
}public class ExceptionDemo
{
static void compute(int a) throws MyException
{
System.out.println("Called compute" + a + ".") ;
if( a > 10 )
throw new MyException( a ) ;
System.out.println( "Normal exit" ) ;
} public static void main(String args[])
{
try
{
compute( 1 ) ;
compute( 11 ) ;
}
catch( MyException e )
{
System.out.println( "Exception caught "+ e ) ;
}
}
}输出;
Called compute1.
Normal exit
Called compute11.
Exception caught MyException[11]
请问是谁调用了public String toString()函数啊?

解决方案 »

  1.   

    System.out.println( "Exception caught "+ e ) ;
    这一句。
    由于和String 进行'+'运算,e被转成了String(通过自动调用toString)
      

  2.   

    要是我在MyException中再加一个返回String的函数,那它怎么判断该调用哪个的?
      

  3.   

    "Exception caught "+ e  就相当于 "Exception caught" + (e == null ? "null" : e.toString())
      

  4.   

    gtlang78(),能不能给你QQ给我呢?
    学习ing
      

  5.   

    toString()是Object类中的方法,也就是所有的类都有的,java的一切对象都可以转成String,默认的就使用toString()这个方法,你写其他返回String的方法没用。
      

  6.   

    就是说除了构造函数外,toString也会被自动调用的?
      

  7.   


    还是算了吧
    自己多理解理解
     ioriogami,谢谢你
    这是我首次发帖
    谢谢你的热情答复
    分就给你了
      

  8.   

    在你的对象和某个String做加法'+'(也就是连接)时,toString()这个函数就会自动调用。