java日常学习:异常和finally块
来源:互联网 发布:spss数据显著性分析 编辑:程序博客网 时间:2024/05/18 02:46
java代码块
异常
———| Throwable 所有错误与异常的父类
—————| Error 错误,错误一般都是由于jvm或者是硬件引发的问题。一般都不会通过代码
处理错误。
—————| Exception 异常, 异常我们是需要通过代码去处理的。
异常的方式处理:
方式一: try-catch块的处理方式 捕获处理
格式: try{ 可能会发生异常的代码 }catch(异常类型 变量名){ 处理异常的代码。。 }
捕获处理要注意的细节:
1. 如果一个try块中出现了异常代码经过处理之后,那么try-catch块外面的代码可以正常的执行。
2. 如果一个try块中出现了异常的代码,那么在一个try块中出现异常代码后面的代码无法正常执行。
3. 一个try块后面可以跟有多个catch块,也就是说一个块可以捕获多种异常的类型。
4. 一个try块后面可以跟有多个catch块,但是捕获的异常类型必须按照从小到大进行捕获。
异常的处理方式2: 抛出处理. (throw 、 throws)
抛出处理要注意的细节:
1. 如果一个方法的内部抛出了一个编译时异常对象,那么必须 要在方法声明抛出。
2. 如果调用了一个声明抛出编译时异常类型的方法,那么调用者必须要进行处理,否则编译报错。
3. 一个方法如果遇到了throw关键字,那么该方法会马上停止执行。
4. 在一个种情况下只能抛出一种异常对象。
throw 与 throws的区别:
1. throw关键字是用于在一个方法的内部抛出异常对象的,throws是用于在方法上声明抛出异常类型的。
2. throw关键字后面跟的是一个异常的对象,throws后面跟的是异常的类型。
3. throw关键字一次只能抛出一个异常对象,throws一次可以声明抛出多种异常类型。
什么时候使用抛出处理?什么时候使用捕获处理?
如果需要通知调用者出了异常,那么则需要使用抛出处理。如果与用户直接打交道的代码就使用捕获处理,千万不能抛出,一旦抛出就抛给了用户。
—–| Throwable 所有异常与错误的父类
———-| Error 错误 错误一般都是由于jvm或者是硬件引发的问题。一般不通过代码处理
———-| Exception 异常。 异异常需要处理
—————| 运行时异常 (RunTimeException以及RuntimeException子类 ) 如果一个方法内部抛出了一个运行时异常对象,那么方法声明可以声明抛出也可以不声明抛出
,如果调用了一个声明抛出运行时异常类型的方法,那么调用者可以处理也可以不处理。
—————| 编译时异常(非运行时异常,受检异常 ) 如果一个方法内部抛出了一个编异常译时异常对象,那么该方法则必须要声明抛出,
如果调用了一个声明抛出编译时异常类型的方法,那么调用者必须要处理.
疑问:为什么java编译器对运行时异常管理得如何宽松呢?
因为运行时异常是可以通过程序员良好的编程习惯避免发生的。
sun使用了很多类描述java程序中各种不正常的情况,但是不足以把世界上所有不正常的情况都描述
清楚,那么 我们则需要自定义异常类。
如何自定义异常类: 自定义一个类继承Exception即可。
练习一
class Demo1 { public static void main(String[] args) { try{ div(4,2); }catch(Exception e){ System.out.println("出错了!"); } } public static void div(int a,int b) throws Exception { if (b==0){ throw new Exception(); } int c =a/b; System.out.println("结果是:"+c); }}
练习二
/*需求:模拟飞Q 上线,如果插上网线了,那么可以正常显示好友列表,否则抛出一个没有插网线的异常,*///自定义一个异常类;class NoIPException extends Exception { public NoIPException(String message){ super(message); //调用了父类一个参数的构造函数; }}class Demo2 { public static void main(String[] args) { try{ feiQ(null); }catch(NoIPException e){ e.printStackTrace(); System.out.println("马上就插上网线!!"); } } public static void feiQ(String ip) throws NoIPException { if (ip == null){ throw new NoIPException("没有网线"); } System.out.println("好友列表"); }}
finally块
finally 块
finally块的使用前提: 必须要配合try块使用,不能单独使用。
finally块的代码在任何情况下都可以执行,只有在jvm退出的情况才不会执行。
try块的表现形式就有三种:
方式1: 适用于没有资源文件释放,只需要处理异常的代码使用。 try{ 可能发生异常的代码 } catch( 异常类的类型 e){ 异常的处理代码.. } 方式2: 适用于既有资源释放也需要处理异常的代码去使用。 try{ 可能发生异常的代码 } catch( 异常类的类型 e){ 异常的处理代码.. } finally{ 释放资源的代码; }方式3: 只需要 释放资源文件,不需要处理异常的代码去使用 try{ 可能发生异常的代码 } finally{ 释放资源的代码; }
用于平时自己复习回顾,如有错误,欢迎指正
- java日常学习:异常和finally块
- Java 异常finally 代码块
- Java异常处理回顾:使用finally块
- 异常--finally代码块
- 异常之finally块
- 异常----finally代码块
- Java异常----try、catch和finally块中的return执行顺序
- java线程中try catch finally块和throw抛出异常
- Java异常----finally块用法及正确关闭资源
- JAVA---构造函数和构造代码块 finally块
- java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)
- java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)
- java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)
- java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)
- Java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)
- Java异常及异常块执行次序(try、catch、finally、return)
- java try语句块 finally和return 的执行顺序
- java-finally块和return执行先后顺序
- 随机抽取名字
- 简单ioc模拟-使用工厂方法
- win10环境下,解决javac不是内部或外部命令
- HDU 1272 小希的迷宫
- Interactive Data Visualization for the Web, 2nd Edition.pdf 英文原版 免费下载
- java日常学习:异常和finally块
- 【Unity】图形渲染优化、渲染管线优化、图形性能优化
- 三元表达式
- springmvc 执行@Test报错
- 二叉树的一系列基本操作
- Set集合TreeSet学习(Set集合学习二)
- 使用Gradle构建Android应用
- React菜鸟教程学习笔记
- 算法——背包问题 01背包+完全背包+多重背包