JAVA学习之异常处理(try+catch)
2020-08-31 00:26
281 查看
异常处理
一、Try Catch
1、异常是在程序中导致程序中断运行的一种指令流。
分类:
1、受检查异常:编写时标红
2、非受检查异常:运行时出现异常。
格式:
try{// 有可能发生异常的代码段 }catch(异常类型1 对象名1){ // 异常的处理操作 }catch(异常类型2 对象名2){ try+catch的处理流程 finally 异常体系结构 // 异常的处理操作 } ... finally{ // 异常的统一出口 }
finally:是程序必然执行的语句块。
3、处理流程
1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象。 2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出. 3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理
4、异常体系结构
异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可能的抛出) Throwable存在两个子类: 1.Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理。 2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。
********面试题:****finally在某种情况下是否会被执行?
答:除非执行到finally语句之前程序被关闭,例如电脑关机、停电,这种情况下不会被执行。
例如:下面两段代码的输出是什么?
(1)
答:第一段应输出:10,第二段应输出28。
图解如下:
第一段代码中基本数据类型是在栈中存放,所以备份的是最先存入的10,当执行finally时会将10改为20,但是我们备份的数据是10.所以输出的是10.第二段代码的引用数据数据需要在堆中开辟一段空间,然后将一段地址传给栈中的对象名称,备份的是堆传过来的地址,我们修改的是堆中的数据,所以返回的是28.。
**3)finally语句块会执行吗?
答:不执行。catch中的System.exit(0)是唯一一种会导致finally不执行的代码。
**
二、throws
此关键字主要在方法的声明上使 用,表示方法中不处理异常,而交给调用处处理。
异常是否抛出去:如果是因为用户传参导致程序出错,应采用throws关键字将异常跑出去。
面试题:1. try-catch-finally 中哪个部分可以省略?**
答: catch和finally可以省略其中一个 , catch和finally不能同时省略 .
注意:格式上允许省略catch块, 但是发生异常时就不会捕获异常了,我们在开发中也不会这样去写代码.
相关文章推荐
- 用Java写一个小游戏
- Spark Java创建DataFrame
- JAVA-for循环
- JAVA问题分析——i = i++
- java编程二分法查找数组元素索引
- 关于Java反射中创建对象
- java编程冒泡排序和选择排序
- JAVA-while循环
- java学习-匿名内部类
- SpringCloud实战 | 第三篇:SpringCloud整合Nacos实现配置中心
- spring mvc 集成
- 9大Java常用类库总结(上篇)
- SpringCloud实战 | 第二篇:SpringCloud整合Nacos实现注册中心
- Spring MVC基础
- 【程序源代码】基于springboot的快速开发框架
- JAVA基础——Java运算符详解
- JAVA基础——基本数据类型间的转换及运算
- JAVA基础——BigDecimal基本用法
- SpringCloud实战 | 第一篇:Windows搭建Nacos服务
- Java 注解 @@@@@@@@@@