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