Java之异常体系

news/2024/10/21 17:00:02/
  1. 异常体系分类:
    1. Error 错误
    2. Exception 异常
  2. 错误和异常的继承关系:
    1. 所有错误的父类为 Error 类
    2. 所有异常的父类为 Exception 类
    3. Error 和 Exception 的父类为 Throwable
    4. Throwable:代表可抛出
  3. 错误类型:
    1. 编译错误:由编译器找到的错误
      String a = 1;    //编译错误,没有加引号
    2. 异常错误:程序给我们提示
      Class calzz = Class.forName("com.demo.Animal");
    3. 逻辑异常:不会报错,但是必须注意到它有异常,这种异常是逻辑产生的
      int[] arr = new int[5];
      arr[10] = 45;    //没有报错,但是必须注意到这个错误
    4. 栈溢出错误
      public static void main(String[] args){run();    //这里有错误,会产生栈溢出
      }public static void run(){run();
      }
  4. Error 错误:
    1. Error 错误是程序无法处理的错误,它是由 JVM 产生和抛出的
  5. Exception异常:
    1. 运行时异常(非受检异常)
    2. 非运行时异常(受检异常)
  6. 运行时异常(非受检异常):
    1. 由逻辑错误引起
    2. 在编译时异常,必须解决的异常
  7. 处理受检异常:
    1. 抛出
    2. 解决
  8. 受检异常解决方法:
    1. try catch 环绕:
      1. try:找到错误
      2. catch:处理错误
      3. finally:不管有没有异常都必须执行的代码块,常用于关闭资源
        public static void main(String[] args){try{//获取异常}catch(){//解决异常   }finally{// 最终都会走的代码}
        }
      4. 尝试去处理问题,但是处理不了,finally 也能保证后面程序的运行
        public static void main(String[] args){try{int[] arr = new int[5];int[10] = 10;    //这会有异常}catch(){//处理异常   ······}finally{//此行代码不管上方有没有错误都会去执行System.out.println("---------------");}
        }
      5. catch 可以有多个,分别处理不同的情况
        public static void main(String[] args){try{int[] arr = new int[5];int[10] = 10;    //这会有异常}catch(ArrayIndexOutOfBoundsException e){//处理异常   ······}catch(NegativeArraySizeException e){//处理异常   }···
        }
      6. 如果不想使用多个 catch,可以用 Exception 把所有异常兜住
        public static void main(String[] args){try{int[] arr = new int[5];int[10] = 10;    //这会有异常}catch(Exception e){//解决所有异常问题   ······}
        }
      7. Exception 类是所有异常类的父类
    2. 抛出:
      1. throws:表示此方法不去处理异常,而交给方法调用者进行处理
        public class Test{// 异常抛出public static void main(String[] args) throws Exception{}
        }
      2. throw:自定义异常
        try{//自定义异常throw new Exception("自定义异常");
        }catch(Exception e){//打印异常System.out.println(e);
        }
      3. throw 和 throws 区别:
        1. throws:用来声明一个可能产生的所有异常,不做异常处理而是将异常向上传递,将异常抛给调用者
        2. throw:用来抛出一个具体的异常类型
  9. 异常体系整体框架:

http://www.ppmy.cn/news/1540841.html

相关文章

安装配置sqoop(超详细)

前言 sqoop就是sql-to-hadoop,说通俗点,我们用到最多的就是mysql与hive之间的数据传递,而hive是依靠hadoop运行的,所以要再mysql和hive之间互相传递数据,就必须要安装sqoop 一、准备 我们要准备sqoop的安装包&#…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【React】useLayoutEffect、useInsertionEffect

useLayoutEffect useLayoutEffect和useEffect有什么区别呢? useEffect的cb,准确来说,是异步调用的,会等主线程任务执行完成,D0M更新,JS执行完成,视图绘制完成,才执行。 useLayout…

【Python】基础--文件处理

在Python中,文件处理涉及打开文件、读取文件内容、写入文件以及关闭文件等操作。以下是有关文件处理的基本知识: 1. 文件的打开 在Python中,可以使用内置的 open() 函数打开文件。open() 函数的基本语法如下: file_object ope…

一文详解AI模型部署及工业落地方式

最近在复盘今年上半年做的一些事情,不管是训练模型、部署模型搭建服务,还是写一些组件代码等,零零散散是有一些产出。 虽然有了一点点成果,但仍觉着缺点什么。作为深度学习****算法工程师,训练模型和部署模型是最基本…

无人机:无线电波控制技术!

一、无线电波控制技术 通过无线电波与无人机上的接收机进行通信。当飞手在遥控器上操作控制杆时,这些动作会被转换为无线电波信号,并发送给无人机上的接收机。接收机接收到信号后,会解读控制杆的位移,并将其转化为数字信号&#…

万家数科:零售业务信息化融合的探索|OceanBase案例

本文作者:马琳,万家数科数据库专家。 万家数科商业数据有限公司,作为华润万家旗下的信息技术企业,专注于零售行业,在为华润万家提供服务的同时,也积极面向市场,为零售商及其生态系统提供全面的核…