下面这张类图对于异常的结构一目了然!
对于Exception下的两类异常:
①. Checked异常(非运行时异常)
只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。
如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。
对Checked异常处理方法有两种
1 当前方法知道如何处理该异常,则用try...catch块来处理该异常。
2 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。
常见的Checked异常有:
Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException
②. RuntimeException(运行时异常)
顾名思义,这类异常是程序在运行过程中产生的异常。一般为代码生产者编码过程中隐藏的异常!!
常见的运行时异常有:
Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException
ERROR:
当程序发生不可控的错误时,通常做法是通知用户并中止程序的执行,。与异常不同的是Error及其子类的对象不应被抛出。
Error是throwable的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。
Error由Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。