JAVA,异常

2023-11-19

异常概念

通常大家认为异常就是错误。

但这个错误有很多种:

1.语法错误

2.JVM虚拟机错误

3.平台错误

4.程序运行错误(平台或者资源或者逻辑,数值等错误)

常见的异常

1. java.lang.NullPointerException 空指针

2. java.lang.ArrayIndexOutOfBoundsExcetion 下标越界,只要有IndexOutOfBounds就是下标越界有关

3. java.lang.ArithmeticException 除数不能为零

4. java.lang.ClassCastException 类型转换异常

5. java.lang.NimberFormatException 数字格式化异常

6. java.lang.NoSuchMethodError 调用的方法不存在

7. java.lang.NoSuchMethodException 方法不存在(反射机制)

8 .java.lang.NoSuchFieldError  JVM虚拟机出现属性找不到异常

9. java.lang.NosuchFieldException 反射机制中出现属性找不到异常

10.java.lang.NoClassDefFoundError jvm虚拟机运行代码时找不到class类文件

11.java.lang.ClassNoFoundException Class.forName , 这个方法报错的话,查看一下是否缺少文件

12.java.lang.OutOfMemoryError 虚拟机内存不够,需要扩大

13.java.lang.ClassFormatError 类格式错误 看看jdk版本是否有误。

异常捕获处理

try{

    代码

}catch( 异常类型 ){

    处理代码

} catch( 异常类型 ){

    处理代码

}

try里面代码出现异常马上就跳到catch陷阱,但是也要类型匹配才行,要不不然不能跳进去,如果跳不进去又会向外抛.

Try catch 可以嵌套,但是需要注意的时,如果嵌套在try里面,如果嵌套的异常处理不了它可以调到外面的try catch去处理。但如何嵌套在catch异常处理代码中,那样如果嵌套的异常处理不了是不可以调到外面的cry catch中的,只能直接报异常了、

通用陷阱


从上图可看出,异常Throwable是祖先类,下来是延伸细分,Exception(程序代码异常类)Error(JVM虚拟机异常类)

Exception(程序代码异常类)下面还分出一个RuntimeException

所以Throwable是最通用的异常,它可以接收全部异常类型,Exception可以接收程序代码全部异常。Error可以接收JVM虚拟机跑出的全部异常。下来就到详细的一一细分的异常类型。

建议:通用陷阱一般不要挖,错误报的越仔细越好。或者通用异常陷阱,要写在最后一个catch后面,这样就会先判断全面的catch,再往后面判断。

注意:catch 里必须写输出代码,要不然没有任何提示,就不知道有没有出现异常了。要么System.out.println  要么printStackTrace

finally 关键字

终极执行块,无论有没有出现异常,都会执行里面的代码。

try{

    代码

}catch( 异常类型 ){

    处理代码

}finally{

    必执行代码

}

try里发生异常,执行了fianlly代码,如果finally也有异常抛出,这样就会覆盖之前抛出的异常(报新不报旧)


自定义异常

1.throw关键字:抛出异常

2.throws关键字:在方法声明抛出的异常throws后面可以挂很多异常类来提醒程序员可能有一次抛出。方法中可以不写catch陷阱,直接将错误向抛。

RuntimeException 以下的所有异常类(包括自己),都不需要强制书写try catch或者方法声明抛出

自定义异常该继承那个类?

1.如果错误很严重,必须提醒的那你就需要继承 Exception,必须写 try catch 或者 throws

2.如果错误不严重,而且这种错误经验足了慢慢就避免,你就继承RuntimeException 不强制要求你写 try catch 或者 throws

注意:自定义异常的类名越详细越好   

例如:TuiXueQuanXianXiuGaiException

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA,异常 的相关文章

随机推荐

  • 课程笔记3

    一 以太坊 比特币被称为区块链1 0 以太坊被称为区块链2 0 以太坊的符号是ETH 以太币的符号是Ether 单位是Wei 比特币的符号是BTC 单位是Satoshi 以太坊做出的改进 在以太坊中出块时间减少到十几秒 比特币的mining
  • iOS实训笔记—调用系统相机与网络请求

    iOS开发实训第三周周报 总结 本周开始进行项目的开发 目前小组计划共同完成前端开发 我负责的部分为个人页面 其中涉及到加载个人信息时 需要从相册或相机获取图片 作为头像上传 并进行网络请求 获取资源 因此本周周报总结这部分的内容 学习知识
  • NeRF学习笔记(含公式、图解和过程)

    NeRF学习笔记 关注公众号 不定期分享NeRF相关文献 引言 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis作为2020年ECCV的一篇论文 在用
  • 51单片机的智能饮水机控制系统【proteus仿真+程序+原理图】

    1 主要功能 该系统由AT89C51单片机 LCD1602模块 DS18B20温度传感器模块 DS1302时间模块 继电器驱动模块 电位器模块构成 适用于智能饮水机 智能水杯等相似项目 可实现功能 版本一 1 LCD1602实时显示时间 水
  • 在CentOS上安装桌面环境(例如GNOME)

    可以按照以下步骤在 CentOS 上安装桌面环境 例如 GNOME 确保您的 CentOS 系统已连接到互联网 并拥有 root 或具有 sudo 权限的用户 打开终端 并使用 yum 包管理器更新系统 sudo yum update 安装
  • MSP430嵌入式接口编程(惯性测量单元温湿度双音多频磁力计LCD显示等)

    Energia IDE编程MSP430 GPIO 串口通讯 定时中断 添加库 嵌入式器件接口编程 加速度计 include
  • 全 民 进 入 互 联 网

    2015年 3C行业的变化有目共睹 互联网 的概念全面深入人心 贯穿于企业经营和百姓的日常生活中 通讯行业提速降费 诸多国产精品手机现身 电商行业更加规范 移动端超越PC端成为主流渠道 家电行业诞生多个新技术 智能家电格局正在改写 让我们一
  • C++实现FFT频谱分析

    Update 9 10 2022 鸽了太久 增补了一些新的表述和简单推导 以及FFT在算法竞赛中的应用部分 帖子里的代码已经分别在2021全国大学生电子设计竞赛 洛谷OJ和课程设计中实战过 可靠性有保障 Origin 10 23 2021
  • web前端技术笔记(九)JavaScript介绍、变量、操作元素属性

    JavaScript JavaScript介绍 变量 变量类型 变量 函数 属性 函数参数命名规范 获取元素方法一 操作元素属性 通过 操作属性 通过 操作属性 innerHTML JavaScript介绍 JavaScript是运行在浏览
  • Ant-Maven-Gradle

    make Makefile学习 peterYong 博客园 ant ant 工具 milkty 博客园 maven 学习Maven这一篇就够了 轻松的小希的博客 CSDN博客 学Maven 这篇万余字的教程 真的够用了 江南一点雨 博客园
  • CSS 样式书写规范,css样式书写规范

    在工作当中css样式是非常重要的 但是咋样书写css样式更重要 一 css书写规范 1 定位属性 position display float left top right bottom overflow clear z index 2 自
  • 千与千寻 中日歌词与罗马音译(最准确啦)

    千与千寻 国语和日语版 Cover 木村 弓 作曲 木村 弓 作词 觉 和歌子 张 就此告别吧水上的列车就快到站 粥 呼 胸 奥 yo n de i ru mu ne no do ko ka o ku de 张 开往未来的路上没有人会再回返
  • MySQL 触发器入门 (转载)

    博客迁移 时空蚂蚁http cui zhbor com MySQL 5 1包含对触发器的支持 触发器是一种与表操作有关的数据库对象 当触发器所在表上出现指定事件时 将调用该对象 即表的操作事件触发表上的触发器的执行 创建触发器 在MySQL
  • Android 本地更新APK(无需添加运行时权限)

    很多APP都会有自动更新APP然后本地安装的功能 之前一直是用AsnycTask来做的 最近发现AsyncTask被标记为过时 那么就换一种方式来写吧 我自己是做在Dialog里面 使用okhttp进行文件下载 配合自定义View的进度条进
  • python大规模数据处理技巧之一:数据常用操作

    面对读取上G的数据 python不能像做简单代码验证那样随意 必须考虑到相应的代码的实现形式将对效率的影响 如下所示 对pandas对象的行计数实现方式不同 运行的效率差别非常大 虽然时间看起来都微不足道 但一旦运行次数达到百万级别时 其运
  • 线程的创建及性能

    目录 1 多线程 VS 单线程性能 2 线程3中创建方式 2 1 创建方式一 继承Thread 1种写法 2 2 创建方式二 实现Runnable及变种 4种写法 2 3 创建方式三 带返回值的Callable 2种写法 线程休眠演示打印电
  • momentJS 时间差计算

    momentJS时间差计算 最近在使用JavaScript计算时间差的时候 发现很多问题需要处理 在查看momentJS之后 发现非常容易 console log moment format YYYY MM DD HH mm ss 当前时间
  • 完全二叉树与满二叉树

    去笔试了很多次 每次都有有关于二叉树的题目 而且其中最多的是关于完全二叉树 然而完全二叉树在哥心中的形态一直很模糊 究其原因是我把完全二叉树和满二叉树搞混了 其实满二叉树是完全二叉树的特例 因为满二叉树已经满了 而完全并不代表满 所以形态你
  • 提升应用性能的关键步骤——UniApp性能优化策略与技巧详解

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 前端炫酷代码分享 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架构咱们从0说 数据流通的精妙之道 文章目录 前言 代
  • JAVA,异常

    异常概念 通常大家认为异常就是错误 但这个错误有很多种 1 语法错误 2 JVM虚拟机错误 3 平台错误 4 程序运行错误 平台或者资源或者逻辑 数值等错误 常见的异常 1 java lang NullPointerException 空指