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

Java 07异常

异常

指的是程序在编译和执行的过程中,出现的非正常的情况;
当然语法错误并不属于错误

异常体系

最大的Throwable;
分为两个:Error Exception

Error

严重级别问题
常见的
堆内存溢出
栈内存溢出

Exception

分为两个子类
RuntimeException 
运行时异常
除了RuntimeException外的子类 
编译时异常

在这里插入图片描述

例如,我现在这里将日期进行实例化,但是date进行实例化的时候及其有可能出错,所以需要将其抛出
所以需要提前将异常进行处理

在这里插入图片描述

异常的默认处理流程

向上抛出
package com.ithemia;public class yichang {public static void main(String[] args) {System.out.println("开始");methon();System.out.println("结束");}private static void methon() {System.out.println(10/0);}}
强制终止!!!!
现在,我调用了一个methon的方法,出现了除以0的问题,这个时候就会创建一个aRITHMETIC类似的*异常对象*,向上一级抛出,上一级为main,main继续上上一级抛出,也就是jvm即java虚拟机,java虚拟机将异常展示在你的面前

在这里插入图片描述

try…catch

好处:异常对象可以被捕获,后续的代码可以继续执行
格式:
try{可能出现异常的代码
}
catch(异常名称 对象名){}
执行流程:
1.执行try中的代码,看是否有异常对象产生
2.没有:catch就不会捕获,后续代码继续执行
3.有:catch捕获异常对象,执行catch{}中的处理方案,方便后续代码执行

在这里插入图片描述

多个异常,就可以写多个catch,最先执行的异常会被执行
也可以之间抓一个大的catch(Exception e)
实际上就是多态 Exception e=new ArithmeticException();
但是不推荐,因为太过于笼统了如果要捕获多个异常,最大的异常一定要放到最后ctrl+alt+t选中这一行,被包裹

throws

抛出异常
Date date=sdf.parse("fs00");
让方法throws ParseException();
但仅仅是声明异常,会将错误抛给上一级,但实际上并没有进行处理!!!

选择

需要将问题暴露出来,用throws
不需要用try catch

在这里插入图片描述

也可以写e.getMessage();
获得异常对象的你自己创建的那个问题的注释
运行时异常在子类中是不用进行抛出的

throw

用来抛出对象的

自定义异常

自定义编译时异常,继承Exception
运行时异常,继承RuntimeException
实际上就是创建一个类,去继承我需要的那个类,在编译或者运行的时候,实际上抛出的就是我自己写的那个类,那么就可以实现我自己写的异常去进行抛出

异常的细节

String getMessage();返回你写的错误的问题
如果是自定义的,返回的实际上也就是你的自己写的构造函数的错误的答案pribtStackTrace();
展示遗产的全部的异常的信息,第几行,什么类型的错误等

继承关系中的异常的处理

子类重写父类的方法的时候,不可以抛出父类没有的异常,或者比父类更大的异常,
你爹都没有,你为什么能有?=================================err

http://www.xdnf.cn/news/7507.html

相关文章:

  • 将 Workbook 输出流直接上传到云盘
  • Apollo10.0学习——planning模块(8)之Frame类
  • 使用VGG-16模型来对海贼王中的角色进行图像分类分类
  • python打卡day31
  • SQLynx 团队协作实践:提升数据库开发效率的解决方案​
  • 4-5月份,思科,华为,微软,个别考试战报分享
  • Axure中使用动态面板实现图标拖动交换位置
  • C++23 新增扁平化关联容器详解
  • 微小店推客系统开发:构建全民营销矩阵,解锁流量增长密码
  • Java EE进阶1:导读
  • Spring Cloud Gateway深度解析:原理、架构与生产实践
  • 根据当前日期计算并选取上一个月和上一个季度的日期范围,用于日期控件的快捷选取功能
  • MySQL 8.0 OCP 英文题库解析(七)
  • 在 Git 中添加子模块(submodule)的详细步骤
  • kotlin 将一个list按条件分为两个list(partition )
  • 漏洞检测与渗透检验在功能及范围上究竟有何显著差异?
  • iOS Runtime与RunLoop的对比和使用
  • 基于flask+vue的电影可视化与智能推荐系统
  • PostgreSQL架构
  • HTML应用指南:利用POST请求获取全国申通快递服务网点位置信息
  • 华为云鲲鹏型kC2云服务器——鲲鹏920芯片性能测评
  • 【EI会议火热征稿中】第二届云计算与大数据国际学术会议(ICCBD 2025)
  • 程序运行报错分析文档
  • 使用 adb 命令截取 Android 设备的屏幕截图
  • CentOS 7连接公司网络配置指南
  • BERT 作为Transformer的Encoder 为什么采用可学习的位置编码
  • 打破次元壁,VR 气象站开启气象学习新姿势​
  • 使用SQLite Studio导出/导入SQL修复损坏的数据库
  • 面试突击:消息中间件之RabbitMQ
  • 流复备机断档处理