Java异常处理
1.异常
是指在程序在运行过程中所发生的不正常事件,它会中断正字运行的程序;
异常处理:Java编程语言使用异常处理机制来为程序所发生的不正常事假提供错误处理的能力;
Throwable:Java中所有异常的父类Throwable(可抛出);
Error(错误)和Exception(异常)是Throwable的两个重要子类;
Error(错误):是程序代码无法处理的机制,大多是是Java运行时系统内部错误,应用程序不会抛出此类对象;
Exception(异常):是程序代码本身可以处理的异常,对异常处理以后代码不会终止运行;
运行异常:都是RuntimeException类及其子类,如NullPointerException(空指针异常),IndexOutOfBoundsException(数组下标越界异常)
该异常的特点是:Java并不会检查此类异常,就算没有捕捉处理(try catch )和抛出异常处理(throw),编译依旧会通过;
非运行异常(编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。这是必须要处理的异常,如果不处理无法通过编译,比如一
些强制异常,线程中的异常处理、IO流中的异常处理。
2.异常处理的5个关键字
(1)try 执行可能发生异常的语句或者代码块;
①:必须在try之后添加catch或finally块,至少有一个块;
②:遵循顺序:若代码同时运行catch和finally块,catch块必须在try后面;
③:catch块以相应的异常类的类型相关;
(2)catch 捕获异常
(3)finally 无论代码是否出现异常,finally后的代码块总会执行,除非遇到exit()方法;
当程序中有return的时候,先执行finally的内容,再去执行return的内容;
(3)throws 用于方法声明是抛出异常
在程序中可能出现的异常,我们在方法名后声明,但是这样并没有真正的处理,只是将异常抛给了调用者去处理,如果调用者不处理话依然会出现异
常,除非使用try-catch;
(4) throw 抛出异常
如果程序代码try catch处理不了某种异常(比如异常并不是该代码块产生,只有抛出)、不知道如何处理该异常、不想try catch,都可以使用抛出。但是,
只要程序不停的调用这个方法,就要不停的抛出。
3.自定义异常
(1).通过继承Exception类声明自己的异常类
(2)在方法适当的位置,生成自定义异常的实例,并用throw抛出
(3)在方法声明部分用throws语句声明该方法可能抛出异常