复制代码
- class FuShuException extends Exception
- {
- // super("除数不能为负数");//要给父类的Message赋值,没有的话,那就是默认的null。
- }
- class Demo
- {
- int div(int a,int b)throws FuShuException
- {
- if (b<0)
- throw new FuShuException();
- return a/b;
- }
- }
- class ExceptionDemo
- {
- public static void main(String args[])
- {
- Demo d = new Demo();
- try
- {
- int x = d.div(4,-1);
- System.out.println("x="+x);
- }
- catch(FuShuException e)//处理算术异常是,记得给成Exception
- {
- System.out.println(e.toString());
- System.out.println(e.getMessage());
- }
- System.out.println("over");
- }
- }
- //在你这个处理块中,只能针对FuShuException异常进行处理,假如你b输入的0,那么try中捕获的异常将是算术异常
- //try把捕获的异常交给了catch,和()中的异常比对,找不到可以处理的异常,所以没有执行的catch块,既然没有被处理只能一级级抛给了
- //JVM,JVM默认处理就是打印异常错误的堆栈信息,如果你想让它执行catch中的两个方法,就要把FuShuException给成Exception
- //toString()方法 是返回Exception in thread "main"+异常类名+getLocalizeMessage(),如果你的定义的异常类没有用super(String)给Message赋值,那么就是返回null
- //如果getLocalizeMessage返回null toString就打印Exception in thread "main"+异常类名
- //你定义的FuShuException没有用super()初始化吗?所以抛出异常处理的时候toString打印了类名,而getMessage不就是null,左后的over
复制代码
- <BLOCKQUOTE>
杨希 发表于 2014-4-4 13:25
非常感谢,也就是我在继承父类Exception的异常的时候没有定义getMessage()和toString(),catch的FuShuExc ...
caijunsong 发表于 2014-4-7 12:21
不对 私聊吧 752541086
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |