1. 异常

异常

1.1 异常概述

1.2 JVM的默认处理方案

有一行代码报错,下面的代码就不会执行。

1.3 异常处理

如果程序出现了异常,需要我们自己来处理,
因为在实际的开发中,不能因为一处的报错,影响了接下来程序的运行。

1.4 异常处理之try … catch …

代码示例:

运行结果:
这次通过自己定义的异常处理,不会再像默认的那样直接停止程序了,而是会输出一段异常处理代码,再执行下面的代码。

1.4.1 finally关键字

finally 关键字用来创建在 try 代码块后面执行的代码块。

无论是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

finally 代码块出现在 catch 代码块最后,语法如下:

try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}

1.5 Throwable的成员对象

Throwable类是所有异常和错误类的祖宗类,所以利用多态,可以使用Throwable的子类,可以使用Throwable的成员方法。

代码示例:
getMessage()方法

运行结果:
输出了程序错误的原因

toString()方法

运行结果:
输出了程序错误的位置和原因

printStackTrace()

运行结果:
输出了错误原因和异常位置,还有异常信息
printStackTrace()输出的错误信息是最全的,一般使用的是printStackTrace()方法来提示错误信息。

1.6 编译时异常和运行时异常的区别

编译时异常:在写代码时,编译器可以提示错误信息,不修改则不可以运行程序。
运行时异常:在写代码时,编译器没有提示错误信息,也可以运行,但是运行后会提示异常信息。

1.7 异常处理之throws

代码示例:
运行时异常使用throws

运行结果:
结果是并没有输出”结束”,可以程序已经停止,throws的作用只不过是抛出异常信息,并没有实际的解决问题

编译时异常没使用throws时:

编译时异常使用throws:

编译时异常使用throws时代码时不报错了,但是调用的时候还是会报错,在调用的时候还是要我们自己处理异常。

可见编译时异常使用throws时是,谁调用谁处理。

运行结果:

总结:不管是编译时异常还是运行时异常,都可以通过在方法后面加上throws,抛出异常。
但是这种抛出,它并没有做实际的处理,真正的处理还是要通过 try … catch … 进行处理。

1.8 自定义异常

继承Exception

代码示例:

写一个自定义异常类:

继承Exception(异常类),写一个无参构造和一个有参构造。

创建一个使用异常的类:
因为自定义类继承的是Exception类,所以它是编译时异常,所以要用throws接收异常对象,把异常信息抛出去,让调用者去处理。
而throw的作用就是抛出异常对象,让throws接收,给出我们自己想要给出的提示信息。

测试类:

运行结果:
98,正常

120,超处了自定义异常类中的规定数字,报出了异常,但是没有异常信息,
因为我们使用的是自定义异常类是无参构造的方法,这次使用有参构造方法,向下看。

修改异常使用类:

运行结果:
98,正常

120,异常,但是这次给出了报错信息,因为使用的是有参的构造方法。

1.9 throws和throw的区别

1     public void method() throws Exception1,Exception2,...,ExceptionN{
2 ...
3 }
 1     //方法内部自己抛出的异常自己处理
2 public void test(){
3 Scanner sc = new Scanner(System.in);
4 int age = sc.nextInt();
5 if(age<18 || age>80){
6 try {
7 throw new Exception("test");
8 } catch (Exception e) {
9 e.printStackTrace();
10 }
11 }
12 }
1     //谁调用test谁处理,也可在方法调用处继续向上抛由上层来处理
2 public void test2() throws Exception {
3 Scanner sc = new Scanner(System.in);
4 int age = sc.nextInt();
5 if(age<18 || age>80){
6 throw new Exception("test");
7 }
8 }

Java基础00-异常25的更多相关文章

  1. java基础之异常 · fossi

    在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...

  2. Java基础之异常

    1.异常的概念 异常:程序在运行时出现的不正常情况,也可以说是出现的问题: Java中的异常:出现的不正常的问题也是一类事物,这类事物有一些共性的东西,比如有名称,有产生的原因等,将这些共性的部分抽取 ...

  3. 【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  4. JAVA基础知识|异常

    一.基础知识 处理异常,java提供了一个优秀的解决方案:异常处理机制. java把异常当作对象来处理,所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Excep ...

  5. 【java基础之异常】死了都要try

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  6. Java基础笔记-异常

    Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的 ...

  7. Java基础(00)

    Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...

  8. 黑马程序员----java基础:异常

    dff ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 经常写程序的人对try...catch...finally语句肯定是不陌生的了.但是好多 ...

  9. java基础(21):异常

    1. 异常 什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 1.1 ...

  10. java基础之异常。

    异常: (1)异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后 ...

随机推荐

  1. Tomcat配置probe详细过程(步骤加截图)

    1.先下载probe.war包,点击probe.war进行下载:附上下载地址:https://github.com/psi-probe/psi-probe/releases 2.将probe.war包 ...

  2. 五、自定义Zabbix监控项目

    要求: 沿用练习三,使用Zabbix实现自定义监控,实现以下目标:监控Linux服务器系统账户的数量. 方案: 需要使用Zabbix自定义key的方式实现自定义监控,参考如下操作步骤:1.创建自定义k ...

  3. 【NX二次开发】根据视图名称获取视图的矩阵

    函数:uc6433 () 函数说明:获取视图名称对应的矩阵值.视图名称分为几类: 1. 制图中的视图,右键属性可以查看名称 获取上图中的视图的矩阵: 1 double v_mtx[9] = { 1.0 ...

  4. 通过Z-Order技术加速Hudi大规模数据集分析方案

    1. 背景 多维分析是大数据分析的一个典型场景,这种分析一般带有过滤条件.对于此类查询,尤其是在高基字段的过滤查询,理论上只我们对原始数据做合理的布局,结合相关过滤条件,查询引擎可以过滤掉大量不相关数 ...

  5. TensorFlow入门实操课程第一章练习笔记

    在本练习中,您将尝试构建一个神经网络,让它根据一个简单的公式来预测房屋的价格. 想象一下,如果房子的定价很简单,带一间卧室的房子价格是5万+5万,那么一间卧室的房子要花10万元:两间卧室的房子就要花1 ...

  6. springcloud webflux

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  7. [.NET Core知识点回顾]-自动内存管理

    自动内存管理是公共语言运行时在托管执行过程中提供的服务之一.公共语言运行时的垃圾回收器为应用程序管理内存 的分配和释放.对开发人员而言,在开发托管应用程序时不必编写执行内存管理任务代码. 分配内存 初 ...

  8. 学会使用Python的threading模块、掌握并发编程基础

    threading模块 Python中提供了threading模块来实现线程并发编程,官方文档如下: 官方文档 添加子线程 实例化Thread类 使用该方式新增子线程任务是比较常见的,也是推荐使用的. ...

  9. 创建Akamai cdn api授权

    注:通过Akamai Cli purge和通过Akamai API进行刷新之前,都要事先创建类似于如下的刷新的凭据,这两种刷新方式所创建的凭据是相同的. 目的:创建Akamai CDN API授权以便 ...

  10. python之循环与判断

    1,for 循环,语法 举例: for i in range(1, 5, 2): # 0,1,2,3,4 print(i) for a in range(5):# --(0,5,1) 0,1,2,3, ...