异常类作用
是为了完善java程序的健壮性,适当地处理异常有利于程序的正常进行。
异常在java中以类的方式存在,每个异常类都可创建对象,在发生异常jvm会自动new对象,并且将new的对象抛出,打印到控制台。
常见的异常类
NullPointerException 当应用程序试图访问空对象时,则抛出该异常
NumberFormatException当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常
IndexOutOfBoundsException指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出
IndexOutOfBoundsException指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出
ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常
RuntimeExceptionRuntimeException 是那些可能在Java虚拟机正常运行期间抛出的异常的超类
此外,还可以通过继承Exception类来自定义所需要的异常
异常体系结构
Error:严重问题,通过代码无法处理。比如:内存溢出。
Exception:称为异常类,它表示程序本身可以处理的问题
RuntimeException及其子类:运行(编译)时异常。 (空指针异常,数组索引越界异常)
除RuntimeException之外所有的异常:编译期必须处理的,否则程序不能通过编译。
(日期格式化异常,代码格式错误)。
Throwable的成员方法
异常的处理方法
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认处理。
把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
程序停止执行
常用的异常处理方法是:在一条可能发生异常的语句或是代码块外用try{}catch(异常类){}包裹
如果在代码书写的时候,可能发生错误,这时需要用 throws 将异常抛出
两种处理异常方式的小结
抛出 throw throws
在方法中,当传递的参数有误,没有继续运行下去的意义了,则采取抛出处理。表示让该方法结束运行。
告诉调用者出现了问题。
捕获 try…catch
能让代码继续往下运行。
下面例举一个简单的例子:
自定义异常:MyException
要求:输入年龄在18-25,否则报异常或抛出
注:这里的catch只有当输入的不是int型才会执行里面的代码