日期:2014-05-20 浏览次数:20982 次
class A
{
int chufa(int a,int b)throws myexception
{
if(b>50)
throw new myexception("除数不能大于50");
return a/b;
}
}
class myexception extends Exception
{
myexception(String str)
{
super(str);
}
}
class Text
{
public static void main (String[] args)
{
A a=new A();
try
{
a.chufa(1,51);
}
catch(myexception ex)
{
ex.printStackTrace(); //这句如果注释掉一点都没有了。
}
}
}
printStackTrace()
将此 throwable 及其追踪输出至标准错误流。
------解决方案--------------------
printStackTrace()
Prints this throwable and its backtrace to the standard error stream.
------解决方案--------------------
try catch throw
------解决方案--------------------
printStackTrace()
将此 throwable 及其追踪输出至标准错误流。此方法将此 Throwable 对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的值。输出的第一行包含此对象的 toString() 方法的结果。剩余行表示以前由方法 fillInStackTrace() 记录的数据。
由于System.err是输出流,所以会打印出下面那么信息
myexception: 除数不能大于50
at A.chufa(yu.java:6)
at Text.main(yu.java:26)
又输出的第一条应该是打印myexception.toString();但myexception.toString()也是空的,所以应该是打印了其父类Exception("除数不能大于50")的toString.具体为什么会打印其父类的toString();这个我自己也弄不明白
至于你说的把那句话注释了,就没打印结果。这是由于你捕捉到了异常,而处理块中做没有任何处理,那肯定没输出了
------解决方案--------------------
a.chufa(1,51)-->throw new myexception("除数不能大于50")-->myexception(String str)-->super(str)-->Exception(String message)
这里str=message="除数不能大于50"
------解决方案--------------------
出异常时,调用了这个构造函数啊
myexception(String str)
{
super(str);
}