当前位置: 首页 > news >正文

---异常---

我们在运行程序时总遇到各种与报错,数组越界,空指针的引用,这些在java中都称为异常

对于不同的错误都具有一个与他对应的异常类来秒描述

        

这是对于数组越界这个类里有的方法,这些是描述异常的

在java中有一个完整的描述异常的类的体系

可以知道最顶层类是Throwable类,可以把所有错误都用Throwable去接收

在往下派生了Exception类和Error俩个大类

Error是严重错误,是程序的逻辑上出了错误或是硬件的问题,比如栈溢出,内存不足

Exception是运行时异常,可以同过 修改代码让后继续运行

异常也分为编译时异常和运行时异常

编译时异常

在编译期产生的异常也叫受检查异常

比如clone时需要声明异常CloneNotSupportedException

运行时异常

在程序运行时产生的异常,比如数组越界

throw关键字

可以使用throw来抛出一个异常

throw和后面接一个异常对象

throws 异常的声明

这表示着个text方法中可能会有 NullPointerException这个异常,提醒调用者要处理这个异常,如果不限在这个方法中处理,那么就要使用throws继续向上抛出异常

若声明的是受查异常如text2的异常,那么必须要进行处理,否者连编译阶段都过不去,也就无法运行

对于异常的处理就要使用try catch

try catch

try里面的语句是可能出现的的异常,可以捕获里面出现的异常,然后跳转到catch去寻找对应异常的语句,若没有对应的就会逐层上抛,从try catch 外面的方法看有没有用try catch去处理,若没有在向上,到main里还没有就会给JVM去处理

若里面会有多个异常,try也只会在捕捉到第一个异常后就跳到catch去

这时将错误上抛 若mian中也没有的话那么就交给JVM

这是交给了JVM处理的结果,程序会被终止

finally关键字

可以在try catch中加上finally关键字,对于finally中的语句一定会被执行,可以中来做善后工作

 即使前面使用了return语句,也是会执行finally中的语句

异常的处理流程

先执行try中的代码,若有异常者跳转到catch中

在catch中寻找对应的异常处理语句,若没找到就将错误向上抛给上层调用者

若没找到对应的处理方法着会一直向上抛,到main中也没有那么上抛到JVM这时程序会终止

对于finally中的语句会在异常抛出之前执行

自定义异常类

虽然java中有丰富的异常类,但也不一定能满足实际的使用,那么这时我们就可以自定义类,用来符合我们的要求

用普通的类来继承Exception 或者 RuntimeException类,方法里的构造方法需要有String参数,用来描述出错误的原因

对于继承Exception的异常默认是受查异常

对于继承RuntimeException的预测默认为非受查异常

ED         hhh

 

相关文章:

  • 秋招突击——第五弹——Java的SSN框架快速入门——SpringBoot的使用
  • 导出 Whisper 模型到 ONNX
  • 什么是git?
  • 弗洛伊德算法——C语言
  • 可视化程序设计OJ技术研究
  • 【Starrocks docker-compose部署】
  • C++ 56 之 菱形继承
  • git-本地项目与git连接及上传【快速教程】
  • PyTorch计算机视觉入门:测试模型与评估,对单帧图片进行推理
  • 【SpringBoot】SpringBoot:构建实时聊天应用
  • Java数据结构与算法(完全背包)
  • Qt 实战(4)信号与槽 | 4.3、信号连接信号
  • 0118__C语言——float.h文件
  • 使用Spyder进行Python编程和代码调试
  • Qt项目天气预报(1) - ui界面搭建
  • 深入了解以太坊
  • JavaScript-如何实现克隆(clone)函数
  • 【面试系列】之二:关于js原型
  • 11111111
  • Android交互
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript创建对象的四种方式
  • LintCode 31. partitionArray 数组划分
  • springMvc学习笔记(2)
  • 阿里云应用高可用服务公测发布
  • 安装python包到指定虚拟环境
  • 产品三维模型在线预览
  • 分类模型——Logistics Regression
  • 分享几个不错的工具
  • 判断客户端类型,Android,iOS,PC
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 嵌入式文件系统
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微服务核心架构梳理
  • 小程序button引导用户授权
  • 学习HTTP相关知识笔记
  • 译有关态射的一切
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • "无招胜有招"nbsp;史上最全的互…
  • (C++20) consteval立即函数
  • (二)正点原子I.MX6ULL u-boot移植
  • (六)软件测试分工
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (轉)JSON.stringify 语法实例讲解
  • ***原理与防范
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .libPaths()设置包加载目录
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Reactor简单使用教程