• Java 异常处理 之 异常概述与异常体系结构


    一、异常概述

      1、异常

        在 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)

        指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。

        在 Java 等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象。

        Java 处理异常的方式是中断处理

        异常指的并不是语法错误,语法错误,编译不通过,不会产生字节码文件,根本不能运行。

    二、异常体系

       异常机制 其实是帮助我们找到程序中的问题。

      java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。其下有两个子类:

          (1)Exception:异常,进行编译(写代码) java 程序出现的问题,程序员可以通过代码的方式纠正,使程序继续运行。

          (2)Error:严重错误,无法通过处理的错误,只能事先避免,必须通过修改源代码,程序才能继续执行。经典代表:VirtualMachineError(堆内存溢出OutOfMemoryError,栈内存溢出StackOverflowError)

      

     1  * 
     2  * java.lang.Throwable
     3  *         |-----java.lang.Error:一般不编写针对性的代码进行处理。
     4  *         |-----java.lang.Exception:可以进行异常的处理
     5  *             |------编译时异常(checked)
     6  *                     |-----IOException
     7  *                         |-----FileNotFoundException
     8  *                     |-----ClassNotFoundException
     9  *             |------运行时异常(unchecked,RuntimeException)
    10  *                     |-----NullPointerException
    11  *                     |-----ArrayIndexOutOfBoundsException
    12  *                     |-----ClassCastException
    13  *                     |-----NumberFormatException
    14  *                     |-----InputMismatchException
    15  *                     |-----ArithmeticException
    16  * 

    三、异常分类

      1、Java 程序在执行过程中所发生的异常事件可以分为两类:

        (1)Error:Java 虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和 OOM。一般不编写针对性代码进行处理;

        (2)Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。如:空指针访问,网络连接中断,视图读取不存在的文件;

      2、解决方法

        对于这些错误,一般由两种解决方法:① 遇到错误就终止程序的运行;② 在编写程序时,就考虑到错误的检测、错误小时的提示,以及错误的处理;

       捕获错误最理想的是在 编译期间,但有的错误只有在运行时才会发生。例如:除数为0,数组下标越界等;

      3、异常分类

        异常(Exception)的分类:根据编译时期还是运行时期来分类

                                          

          蓝色:非受检(unchecked)异常

          红色:受检(checked)异常

         4、运行时异常

        (1)RuntimeException 运行时期异常(或它的子类)。又称非受检异常,即在运行时期,检查异常,在编译时期,运行异常不会编译器检测(不报错)。(如:空指针异常、数组下标越界、类型转换异常、数字格式异常)这些异常可以完全避免掉,编译器不要求强制处理的异常;

        (2)对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响;

      5、编译时异常

        (1)Exception 异常。除了RuntimeException系列以外的,都是编译时异常,又称为受检异常。在编译时期就会检查,如果没有处理异常,则编译失败。(如:IOException、日期格式化异常)

        (2)指编译器要求必须处理的异常。即程序在运行时由于外界因素造成的一般性异常。编译器要求Java程序必须捕获或生命所有编译时异常。

        (3)对于这类异常,如果程序不处理,可能会带来意想不到的结果。

      

        

    三、异常的产生过程解析

      异常的产生过程分析(分析异常的怎么产生的,如何处理异常)

      

    四、常见的异常  

        

    ArrayIndexOutOfBoundsException:数组下标越界异常

    NullPointerException:空指针异常

    ArithmeticException:数学运算异常

    ClassCastException:类型转换异常

  • 相关阅读:
    匈牙利算法demo
    linux/windows 文件共享--Samba环境搭建
    神经网络参数量和计算量计算
    C/C++ 开发中使用第三方库常见问题总结
    linux 如何更改docker的默认存储磁盘
    目录下文件递归查找
    c++ 项目开发技巧
    Finding Tiny faces 思想解析
    美女与硬币问题
    深度优先遍历解决连通域求解问题-python实现
  • 原文地址:https://www.cnblogs.com/niujifei/p/14292740.html
Copyright © 2020-2023  润新知