java的异常问题.... return message;... e.printStackTrace(); ...有两个问题不懂啊??

MyException.java
public class MyException extends Exception {
String message;
public MyException(String ErrorMessage){
message=ErrorMessage;
}
public String getMessage(){
return message; //没有看到输出语句和调用啊??而结果却输出了异常....
}
}
Computer.java
public class Computer {
public static int getMaxComm(int m,int n) throws MyException{ //throws是抛出一个类
if(m<=0||n<=0){
throw new MyException("传递的参数不是正整数");//throw是抛出一个对象
}
if(m<n){
int t=0;
t=m;m=n;n=t;
}
int r=m%n;
while(r!=0){
m=n;n=r;r=m%n;
}
return n;
}

public static void main(String[] args) {
// TODO 自动生成的方法存根
try{
int m=122,n=-10;
int result = getMaxComm(m, n);
System.out.println(m+"和"+n+"的最大公约数是:"+result);

}catch(MyException e)
e.printStackTrace(); //这句话是怎么运行的????返回值有几种??
}
}

}
///////////////////////////////////
MyException: 传递的参数不是正整数
最新回答
浅夏蔷薇

2022-05-18 07:05:09

e.printStackTrace();
将异常的堆栈追踪信息输出至标准异常输出流。
之所以打印的堆栈追踪信息中没有你自定义的错误消息是因为e.printStackTrace()打印的错误消息是根类Throwable类的成员变量message的值而不是你自定义的message,所以你需要改成如下代码:
public MyException(String ErrorMessage){
super(ErrorMessage); //增加一行,将ErrorMessage传给父类。
message=ErrorMessage;
}