-------------------------------------------------------------------------------java.lang.RuntimeExceptionimportjava.io.*;|publicclassChildextendsParent{java.lang.ArithmeticExceptionpublicvoidmethodA()throwsFileNotFoundException,UTFDataFormatException,ArithmeticException{//IO操作,数学运算}}
java.io.FileNotFoundExceptionjava.io.UTFDataFormatException
自定义异常类
?可以通过继承Exception或它的子类来实现自己的异常类?一般而言,对于自定义的异常类,会
设计两个构造器:一个默认的不带参数的构造器以及一个带参数的构造器,后者用于传递详细的出错信息。
自定义异常类例子
publicclassMyDivideExceptionextendsArithmeticException{publicMyDivideException(){super();}publicMyDivideException(Stringmsg){super(msg);}publicStringtoString(){return"除以零引起的例外!";}}
自定义异常类
publicclassDivideExceptionTest{publicstaticvoidmain(Stringargs[]){intn=0,d=0;doubleq;try{n=Integer.parseInt(args[0]);d=Integer.parseInt(args[1]);if(d==0)thrownewMyDivideException();q=(double)n/d;System.out.println(n+"/"+d+"="+q);}catch(MyDivideExceptione){System.out.println(e);}}}
Exception的printStackTrace()方法
?利用Exception的printStackTrace()方法可以追踪异常出现的执行堆栈情况
printStackTrace例子
publicclassSelfDefinedExceptionextendsException{publicSelfDefinedException(){super("自定义的例外类");}}
printStackTrace()例子
publicclassTestPrintStackTrace{publicstaticvoidmain(Stringargs[]){try{firstMethod();}catch(SelfDefinedExceptione){e.printStackTrace();}}publicstaticvoidfirstMethod()throwsSelfDefinedException{secondMethod();}publicstaticvoidsecondMethod()throwsSelfDefinedException{thirdMethod();}publicstaticvoidthirdMethod()throwsSelfDefinedException{thrownewSelfDefinedException();}}