异常

作者: 若兮缘 | 来源:发表于2018-12-08 22:36 被阅读34次

    什么是异常?

    • 异常本质上是程序上的错误,错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误。
    • 编译期间的错误通常是基础的语法错误,比如括号没有正常配对、语句结束后少写了分号,关键字编写错误等,编译器会对这些错误给出提示,帮助我们进行修订。
    • 运行期间的错误只有程序运行时才能看到错误的提示,比如数组访问时下标越界、使用空对象调用方法、算术运算时除数为0、类型转换时无法正常转型等,运行期间的错误往往是难以预料的。
    程序中的异常
    • 在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。
    • 当程序在运行期间出现了异常,如果置之不理,程序可能会不正常运行、强制中断运行、造成用户数据丢失、资源无法正常释放、直接导致系统崩溃,显然这不是我们希望看到的结果。
    • 利用Java中的异常处理机制,我们可以更好地提升程序的健壮性。

    异常的分类

    在java中,通过Throwable以及它的相关子类来描述各种不同的异常类型。
    Throwable是异常的根类,包含两个子类ErrorException

    Error
    • Error是程序无法处理的错误,表示运行应用程序中较严重问题。
    • 大多数的错误与代码编写所执行的操作是没有什么关系的,而表示代码运行的时候java虚拟机出现的系列问题。
    • 常见的有虚拟机错误、内存溢出、线程死锁等,这些错误往往是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。
    • 对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。
    Exception
    • Exception是程序本身可以处理的异常。异常处理通常指的是针对这类异常的处理
    • Exception类的异常包括Unchecked ExceptionChecked Exception
    • Unchecked Exception(非检查异常):编译器不要求强制处理的异常,包含RuntimeException以及它的相关子类
    • Checked Exception(检查异常):编译器要求必须处理的异常,除了RuntimeException以及它的相关子类其他的Exception子类都是检查异常,如IOExceptionSQLException
    常见的异常类型

    异常处理

    在Java应用程序中,异常处理机制为:抛出异常、捕获异常

    抛出异常
    • 当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统进行处理。
    • 异常对象通常包含异常类型和异常出现时的程序状态等信息。
    • 运行时系统负责寻找处置异常的代码并执行。
    • 在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。
    • 运行时系统从发生异常的方法开始,依次回查调用栈中的方法,当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。
    • 当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
    捕获异常

    对于运行时异常、错误或可查异常,java技术所要求的异常处理方式有所不同。
    Java规定对于可查异常必须捕获、或者声明抛出,而允许忽略不可查的RuntimeException(含子类)和Error(含子类)

    实现

    主要通过5个关键字来实现:trycatchfinallythrowthrows

    相关文章

      网友评论

          本文标题:异常

          本文链接:https://www.haomeiwen.com/subject/hmvchqtx.html