异常类的toString()、getMessage()和printStackTrace()方法

Throwable类里声明了toString()、getMessage()和printStackTrace()这3个方法。
Exception类是从Throwable类继承的,能直接调用这几个方法。

官方API文档里对这三个方法的定义:
1. public String toString()
   Returns a short description of this throwable.
2. public String getMessage()
   Returns the detail message string of this throwable.
3. public void printStackTrace()
   Prints this throwable and its backtrace to the specified print stream.

对上述定义的个人理解:
1.调用toString()方法:返回该异常类名和字符串信息
  (或者直接输出该异常对象结果也是一样,因为实质也是调用toString()方法)
2.调用getMessage()方法:返回字符串信息
3.调用printStackTrace()方法:打印该异常类名、字符串信息和方法调用到异常抛出的轨迹
注:toString()和getMessage()和这2个方法的返回类型是String,是返回信息;而printStackTrace()的返回类型是void,是直接打印出信息

用代码验证一下:

public class Ex1{
	public static void main(String[] args){
		try{
			throw new Exception("Zoey");
		}catch(Exception e){
			System.out.println("0: "+e);
			System.out.println("1: "+e.toString());
			System.out.println("2: "+e.getMessage());
			System.out.print("3: ");
			e.printStackTrace();
		}
	}
}
输出:
0: java.lang.Exception: Zoey
1: java.lang.Exception: Zoey
2: Zoey
3: java.lang.Exception: Zoey
        at Ex1.main(Ex1.java:4)


如果是自己定义的异常类(继承了Exception),字符串信息要传给其父类Exception的构造器,上述3个方法才能返回该字符串。(除非在自己定义的类中覆盖这几个方法)。
如下程序中的MyException类的字符串信息只传给自己的构造器的,调用方法时无法返回该字符串

而MyException_1类的字符串信息由super()方法传给了Exception的构造器,调用方法时能返回该字符串

代码:
class MyException extends Exception{
	String s;
	MyException(String s1){this.s=s1;}
}

class MyException_1 extends Exception{
	MyException_1(String s1){super(s1);}
}

public class Test1{
	public static void main(String[] args){
		try{
			throw new MyException("Zoe");
		}catch(MyException e){
			System.out.println("1: "+e.toString());
			System.out.println("2: "+e.getMessage());
			System.out.print("3: ");
			e.printStackTrace();
		}
		try{
			throw new MyException_1("Zoe");
		}catch(MyException_1 e){
			System.out.println("4: "+e.toString());
			System.out.println("5: "+e.getMessage());
			System.out.print("6: ");
			e.printStackTrace();
		}
	}
}
输出:

1: MyException
2: null
3: MyException
        at Test1.main(Test1.java:13)

4: MyException_1: Zoe
5: Zoe
6: MyException_1: Zoe
        at Test1.main(Test1.java:21)





  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值