java基础学习-异常

来源:互联网 发布:新浪网络传真 编辑:程序博客网 时间:2024/05/17 05:59

异常

 Java把异常当作对象来处理

异常结构


Throwable是所有异常的根,java.lang.Throwable
Error是错误,java.lang.Error
Exception是异常,java.lang.Exception

异常分类

Exception异常分为两大类

a) Checked exception(非运行时异常)  (非  RuntimeException,Error) 
如IO异常
b) Unchecked exception(运行时异常)(RuntimeException,Error) 
如数组越界、空指针等

Java中所有的异常类都会直接或间接地继承自Exception。 
 RuntimeException类也是直接继承自Exception类,它叫做运行时异常,Java中所有
的运行时异常都会直接或间接地继承自RuntimeException。 
Java 中凡是继承自Exception而不是继承自RuntimeException的类都是非运行时异
常。

异常处理

a)对于非运行时异常(checked  exception),必须要对其进行处理,处理方式有两种:
第一种是使用try.. catch…finally 进行捕获;
第二种是在调用该会产生异常的方法所在的方法声明throws Exception 

b)对于运行时异常(runtime  exception),我们可以不对其进行处理,也可以对其进行
处理。推荐不对其进行处理。 
try{
 } catch(Exception e) { 
} finally { 

无论程序是否出现异常,finally 块中的代码都是会被执行的。 
如果try 块中存在return 语句,那么首先也需要将finally 块中的代码执行完毕,然
后方法再返回。
如果try 块中存在System.exit(0)语句,那么就不会执行finally 块中的代码,因为
System.exit(0)会终止当前运行的Java虚拟机,程序会在虚拟机终止前结束执行。

我们可以使用多个catch块来捕获异常,这时需要将父类型的catch块放到子类型的
catch块之后,这样才能保证后续的catch可能被执行
,否则子类型的catch将永远
无法到达,Java 编译器会报编译错误;如果多个catch 块的异常类型是独立的
(MyException, MyException2),  那么谁前谁后都是可以的。

自定义异常

所谓自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是
一个自定义异常类。通常情况下,我们都会直接继承自Exception类,一般不会继承
某个运行时的异常类。
class ChushulingException extends Exception{      public ChushulingException(String msg){          super(msg);      }  }     class ChushufuException extends Exception{      public ChushufuException(String msg){         super(msg);      }  }    /*自定义异常 End*/  class Numbertest{     public int shang(int x,int y) throws ChushulingException,ChushufuException{          if(y<0){             throw new ChushufuException("您输入的是"+y+",规定除数不能为负数!");//抛出异常           }         if(y==0){              throw new ChushulingException("您输入的是"+y+",除数不能为0!");         }          int m=x/y;          return m;      }  }


0 0
原创粉丝点击