首页 > 其他分享 >异常

异常

时间:2023-04-20 17:36:38浏览次数:23  
标签:处理 try 编译 catch 异常 throws

异常

基本概念

java语言中,将程序执行中发生的不正常情况称为异常,(开发过程中的语法问题和逻辑错误不是异常)

  • 异常可以分为两大类:Error和Exception

Error(错误)

Java虚拟机无法结局的严重问题,例如JVM系统的内部错误,资源耗尽等严重情况,比如:栈溢出,OOM(out of memory),Error是很严重的错误,系统会崩溃

Exception

其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理,例如空指针访问,试图读取不存在的文件,网络连接中断,Exception可以分为两大类运行时异常,以及编译时异常

异常体系图

  1. 运行时异常:指的是编译器检测不出来,一般指的是编译时的逻辑错误(除数为0),是程序员应该避免其出现的异常,java.lang.RuntimeException类及他的子类都是运行时异常
  2. 对于运行时异常,可以不做处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
  3. 编译时异常,是编译器要求处置的异常

常见的运行时异常包括

  1. NullPointerException,空指针异常
  2. ArithmeticException数字运算异常
  3. ArrayIndexOutOfBoundsException数组下标越界异常
  4. ClassCastException类型转换异常
  5. NumberFormatException数字格式不正确异常

编译异常

介绍:

其他因编程错误或偶然的外在因素导致的一般性问题,编译期间就必须处理的异常,否则代码不能通过编译

  • 常见的编译异常:
    • SQLException 操作数据库时,查询表可能发生的异常
    • IOEception 操作文件时发生的异常
    • FileNotFoundException 当操作一个不存在的文件时,发生异常
    • ClassNotFoundException 加载类发现类不存在时发生的异常
    • EOFException 操作文件,到文件末尾,发生的异常
    • IllegalArguementException 参数异常

异常处理机制

基本介绍

异常处理就是当异常发生时,对异常处理的方式

异常处理的方式

  1. try—catch -finally

程序员在代码中捕获的异常,自行处理

try{
    代码//可能会发生的异常
    
}catch (Exception e){
   //捕获到的异常
    1. 当异常发生的时候
        2. 系统会把发生的异常封装成exception对象e传给catch
        3,得到异常对象后程序员自行处理
        4,如果没有异常,那么catch就不会执行
}
finally{
    不论有没有异常都会执行
}
  1. throws

将发生的异常抛出,交给调用者处理,最顶级的处理者就是JVM

throws的处理机制

try—catch细节

  1. 如果异常发生了,则异常后面的代码不会执行,会直接进入catch块中
  2. 如果没有异常发生,那么则会直接跳过chatch代码块
  3. 如果不论异常是否发生,都要执行某段代码(例如释放资源,关闭链接),则使用finally{}
  4. 可以有多个catch,分别捕获多个异常,但是要求子类异常放在前面,父类放在后面
  5. 可以使用try-finally配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉,应用在一段代码不论是否会崩掉,都要执行某个业务逻辑

throws

  1. 如果一个方法可能会生成某种异常,但是不能确定如何处理这种异常,则此方法应显示的抛出异常,表明该方法将不对这些异常进行处理,
  2. 在方法中声明用throws语句可以抛出异常的列表;throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类

throws使用细节

  1. 对于编译时异常,我们必须使用throws或者try-catch
  2. 对于运行时异常,程序如果没有处理,默认就是throws的处理方法
  3. 子类所抛出的异常类型要么和父类一致,要么为父类抛出异常类型的子类
  4. 在throws中有try-catch方法,就相当于处理异常,就可以不必throws
意义 位置 后面跟的东西
throws 异常处理的一种方法 方法的声明出 异常类型
throw 手动生成异常对象的关键字 方法体中 异常对象

标签:处理,try,编译,catch,异常,throws
From: https://www.cnblogs.com/nastudy/p/17337586.html

相关文章

  • EasyCVR视频融合平台语音对讲设备端异常的问题分析及解决
    EasyCVR平台属于综合性及融合性较强的视频平台,目前可支持多协议、多类型的海量设备接入与分发,具备视频监控直播、云端录像、录像的检索与回看、存储、智能告警、语音对讲、平台级联、跨系统支持、灵活网络环境配置等视频能力,在线下均有大量落地应用。我们在此前的文章中也介绍过关......
  • 10 文件与异常
    从文件中读取数据一次性读取#file_reader.pywithopen('pi_digits.txt')asfile_object:contents=file_object.read()print(contents.rstrip())#因为read()到达文件末尾时返回一个空字符串,而将这个空字符串显示出来时就是一个空行#要删除多出来的空行,可在pr......
  • 无界微前端(wujie):element-ui 弹框内使用select组件,弹出框位置异常解决方案 (主程序加载
    https://wujie-micro.github.io/doc/guide/ element-ui弹框内使用select组件,弹出框位置异常解决方案第一步:在子应用中: 以上3步就好啦!!!是不是很简单这个框架坑很多,希望对大家有帮助!!! ......
  • 谈谈selenium中的clear后输入内容异常的处理
    谈谈selenium中的clear后输入内容异常的处理案例在线考试项目的登录:http://124.223.31.21:9097/#/代码fromseleniumimportwebdriverdriver=webdriver.Chrome()driver.get('http://124.223.31.21:9097/#/')driver.find_element('id','formLabelAlign.username......
  • vue2升vue3后部分异常解决
    element-ui升为element-plus首先建议参考element-plus官方站点:https://element-plus.org/zh-CN/部分组件标签直接变更如el-submenu变更为el-sub-menu浏览器提示ElementPlusError:[ElOnlyChild]novalidchildnodefound哪个页面有该提示就搜"slot=",然后到element......
  • 配置全局异常
    配置相关在python3.6之后,处理文件的路径模块由原来的os变成pathlib,这两者之间互相不会收到影响。settings配置文文件frompathlibimportPathimportosimportsys#项目根路径#我们就是要让小路飞路径作为项目根路径BASE_DIR=Path(__file__).resolve().parent.pa......
  • Java异常处理
    异常的产生、处理捕捉异常 try{可能有异常的代码序列}[catch(异常类型1变量){处理的代码1}]*[finally{必然执行的代码}]?  说明:1.必须至少有一个catch或finally,不能只有try的部分。try-catch-finally 语句可以进行嵌套。2.当在try子句、catch子句、fina......
  • 18 同步与异常(四) 原子操作
    1简介原子操作此操作是不会被打断的2ldrex、strex、teqldrex相对ldr而言此命令多了ex(exclude排除),意为独占eg:将会对ldrr0,r1命令中的r1标记为独占strex相较于str基本功能而言多出清除独占标记eg:strexr2,r0,r1将r0写入r1,并清除r1的独占标记。成功将r2设为0,......
  • raise和raise from捕获异常
    raise/from捕获:可同时抛出自定义异常和原生异常>>>try:...a=2/0...exceptExceptionase:...raiseException('分母不能为0')frome...Traceback(mostrecentcalllast):File"<stdin>",line2,in<module>ZeroDivisionEr......
  • 为啥我请求那里都写了异常捕获了,还是报这个错?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【喜靓仔】问了一个Python异常处理的问题,这里拿出来给大家分享下。二、实现过程这里粉丝给的信息十分有限,看问题其实还是挺难的,【论草莓如何成为冻干莓】给了一个指导。尝试进行断点定位问题:然后就找到了问题所在:这里【瑜亮老师】......