• 每日一问:Java常见异常以及异常产生的原因及使用原则


    每日一问:Java常见异常以及异常产生的原因及使用原则


    Java中常见的异常类型

    • Exception :异常层次结构的根类
    • RuntimeException :运行时异常,多数 java.lang 异常的根类
    • ArithmeticException :算术谱误异常,如以零做除数
    • ArraylndexOutOfBoundException :数组大小小于或大于实际的数组大小
    • NullPointerException :尝试访问 null 对象成员,空指针异常
    • ClassNotFoundException :不能加载所需的类
    • NumberF ormatException :数字转化格式异常,比如字符串到 float 型数字的转换无效
    • IOException :I/O 异常的根类
    • F ileN otF oundException :找不到文件
    • EOFException :文件结束
    • InterruptedException :线程中断
    • IllegalArgumentException :方法接收到非法参数
    • ClassCastException :类型转换异常
    • SQLException :操作数据库异常

    异常产生的原因及使用原则

    在 Java 中一个异常的产生,主要有如下三种原因:

    • Java 内部错误发生异常,Java 虚拟机产生的异常。
    • 编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。
    • 通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。

    Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。

    我们把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。

    Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:
    在当前方法声明中使用 try catch 语句捕获异常。
    一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
    如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。
    异常类型
    在 Java 中所有异常类型都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类层次结构的顶层。Throwable 类下有两个异常分支 Exception 和 Error。

    在这里插入图片描述

    Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常。其中异常类 Exception 又分为运行时异常和非运行时异常,这两种异常有很大的区别,也称为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。
    Exception 类用于用户程序可能出现的异常情况,它也是用来创建自定义异常类型类的类。
    Error 定义了在通常环境下不希望被程序捕获的异常。Error 类型的异常用于 Java 运行时由系统显示与运行时系统本身有关的错误。堆栈溢出是这种错误的一例。
    本章不讨论关于 Error 类型的异常处理,因为它们通常是灾难性的致命错误,不是程序可以控制的。

    Exception 类型的异常处理。

    运行时异常都是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。

    非运行时异常是指 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。

  • 相关阅读:
    详解Native Memory Tracking之追踪区域分析
    在海底管缆工程中硬质层判断标准是怎样的?
    基于二维小波变换的散斑相位奇异构造算法matlab仿真
    Linux下线程间通讯--互斥锁
    牛客刷题——剑指offer(第6期)
    Docker02基础操作
    男士内裤买什么材质的好?2024男士内裤实测推荐
    linux驱动30:度量时间差
    MFC入门问题(n)
    SSM+智慧养老服务平台 毕业设计-附源码211709
  • 原文地址:https://blog.csdn.net/u014657752/article/details/125479825