JAVA学习笔记(2)——错误和异常

一、异常的基本概念
a.又称为例外,是特殊的运行错误对象
b.是面向对象规范的一部分,是异常类的对象
c.Java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了
该运行错误的信息
处理错误的方法
d.每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常


二、java处理错误的方法:
1.抛出(throw)异常
在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常
2.捕获(catch)异常
运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包含相应异常处理的方法为止


三、错误
程序运行过程中发生的异常事件
根据错误的严重程度不同,可分为两类
1.错误
致命性的,用户程序无法处理
Error类是所有错误类的父类
2.异常
非致命性的,可编制程序捕获和处理
Exception类是所有异常类的父类


再对异常进行分类
1.非检查型异常
不能期望程序捕获的异常(例如数组越界,除零等)
继承自RuntimeException
在方法中不需要声明,编译器也不进行检查
2.检查型异常
其他类型的异常
如果被调用的方法抛出一个类型为E的检查型异常,那么调用者必须捕获E或者也声明抛出E(或者E的一个父类),对此编译器要进行检查


四、Java预定义的一些常见异常
1.非检查型异常
ArithmeticException
整数除法中除数为0
NullPointerException 
访问的对象还没有实例化
NegativeArraySizeException 
创建数组时元素个数是负数
ArrayIndexOutOfBoundsException
访问数组元素时,数组下标越界
ArrayStoreException
程序试图向数组中存取错误类型的数据
2.检查型异常
FileNotFoundException
试图存取一个并不存在的文件
IOException
通常的I/O错误


五、异常的处理
对于检查型异常,Java强迫程序必须进行处理。处理方法有两种:
1.声明抛出异常
不在当前方法内处理异常,而是把异常抛出到调用方法中
2.捕获异常
使用try{}catch(){}块,捕获到所发生的异常,并进行相应的处理

六、生成异常对象
三种方式
由Java虚拟机生成
由Java类库中的某些类生成
在程序中生成自己的异常对象,也即是异常可以不是出错产生,而是人为地抛出
生成异常对象都是通过throw语句实现,生成的异常对象必须是Throwable或其子类的实例
throw new ThrowableObject();
ArithmeticException  e = new ArithmeticException();
throw e;


七、声明自己的异常类
除使用系统预定义的异常类外,用户还可声明自己的异常类 
自定义的所有异常类都必须是Exception的子类
一般的声明方法如下
public class MyExceptionName extends SuperclassOfMyException { 
          public MyExceptionName() { 
                super("Some string explaining the exception"); 
          } 
     } 

猜你喜欢

转载自blog.csdn.net/sinat_38756080/article/details/80149054