| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 异常体系关系及处理机制 -> 正文阅读 |
|
[开发工具]异常体系关系及处理机制 |
异常:在程序执行过程中发生的不正常情况,但是语法错误和错误的逻辑思想不算异常。 IDEA添加异常处理的快捷键:选中要处理的代码块——>Ctrl+alt+T——>选择添加的处理,这样,有了异常也不会终止程序,在相应处理后仍会继续向下执行。 一、异常分类: (1)ERROR(错误):JVM无法解决的严重问题,如栈溢出、内存不足等 (2)Exception(异常): (2.1)运行时异常:在运行过程中,一般是由于逻辑错误导致的,编译器检查不出,这类异常不要求强制处理。 (2.2)编译时异常:编译时编译器检查出的异常,一般为网络、文件、数据库异常,这类异常编译器要求必须处理,否则编译不通过。 二、常见的运行时异常: (2)NumberFormatException:数字格式不正确异常,试图将字符串转换成数字,但是字符串的形式不符合 (3)空指针异常、数组越界异常等等 三、异常处理机制: (1)try-catch-finally:在代码块中捕获异常,自行处理 (2)throws:将异常抛出,交给方法的调用者处理,最顶级的处理者是JVM 四、try-catch详细: try{ ? ? ? ? 可能存在异常的代码,如果出现了异常,try块中异常后面的代码不再执行,进入后面的catch匹配处理异常;如果try中没有出现异常,则不执行catch块 }catch(异常1){ ? ? ? ? 出现的异常为异常1,将其捕获,程序员对其处理 }catch(异常2){ ? ? ? ? 同理异常1 }finally{ ? ? ? ? 不管try中是否有异常,始终都会执行,通常将释放资源的操作放在这里 } 执行顺序: try中出现异常,try块中的后续代码不执行——>直接跳到catch处理匹配——>finally块——>后续的代码继续执行; try中无异常,执行try块——>finally块——>后续代码 注: (1)可以有多个catch语句,可以针对不同的异常做出不同的处理,但是这里只是对异常进行了细分,不会一下捕获好几个异常都同时处理,因为在try中只要碰到一个异常就不会在往下执行了,而且catch的异常类型前面不能是后面的子类。
(2)finally块必须执行,即使在catch中有return,也要临时将结果保存起来,执行完finally后,在将临时结果保存!!! 例如: ?(3)try-finally结构的使用场景:执行一段代码,不管是否发生异常,都想要执行的操作。但是这相当于没有捕获异常,执行顺序为: try发生异常,try块后续不再执行——>finally——>抛出异常,结构后面的语句不再执行
练习:
?五、throws详细: (1)用throws可以声明抛出一个异常列表,异常类型可以是产生的异常类型,也可以是他的父类 (2)子类重写父类方法时,子类重写的方法抛出的异常要么和父类抛出的一致,要么是父类抛出异常类型的子类 (3)如果出现了异常,没有try-catch,也没有显示的throws抛出,会有默认的抛出异常,一层层向上抛出,直到JVM输出异常信息,退出程序 (4)try-catch和throws二选一即可 注意:
六、自定义异常 继承Exception或RuntimeException,建议继承第二个,因为在创建后会有默认的throws异常处理,不包含编译时异常
七、throw 和 throws之间的区别: throw:是手动生成异常的一个关键字,在方法体中,后面跟的是创建的异常对象, 如 throw new XXX(传参); throws:是异常处理的一种方式,用在方法的声明中,后面跟的是异常的类型 注:当有异常时,System.out.println(e.getMessage());时,才会输出异常中传入的参数内容 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 11:42:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |