异常与错误

框架图

throwabler
Error
Exception
RuntimeException
CheckedException
  • Error类和Exception类的父类

    都是throwable类,他们的区别是:
    Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
    Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
    Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception )。ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。

  • 常见的异常;

    ArrayIndexOutOfBoundsException 数组下标越界异常,
    ArithmaticException 算数异常 如除数为零
    NullPointerException 空指针异常
    IllegalArgumentException 不合法参数异常

  • throw与throws

    用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。自定义异常必须继承Exception类。
    throw是语句抛出一个异常。比如: throw e;
    throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
    同时:
    1、throws出现在方法函数头;而throw出现在函数体。
    2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
    3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

猜你喜欢

转载自blog.csdn.net/ZhouhbUp/article/details/82758566