java 异常

news/2024/10/18 2:34:09/

Throwable:

Throwable 是 Java 编程语言中所有错误和异常类的超类,用于表示可以被抛出的任何对象。它定义了两个子类:Error 和 Exception。

Error 表示严重问题,一般由 JVM 抛出,如 OutOfMemoryError、StackOverflowError 等;

而 Exception 则表示在程序运行期间可能会发生的问题,分为可检查与不可检查异常。可检查异常需要直接处理或者抛出给上层方法进行处理,如 IOException、SQLException 等;而不可检查异常是指那些一般情况下无法恢复的错误,如 NullPointerException、ArrayIndexOutOfBoundsException 等。

Throwable 中常用的方法包括:

  1. getMessage():获取 Throwable 对象的简短描述字符串。
  2. printStackTrace():在控制台输出 Throwable 对象的堆栈跟踪信息。
  3. toString():返回一个包含 Throwable 对象详细描述的 String。
  4. fillInStackTrace():用当前线程的调用栈替换 Throwable 对象原始的调用栈,以提高错误定位的准确性。

分类:

按照异常出现的时机,Java 中的异常可以分为两类:编译期异常(Checked Exception)和运行期异常(RuntimeException)。

编译异常要求程序员必须处理(捕获或者抛出),不然没法通过编译。(所调用的方法向上抛了异常,调用时必须处理才能通过编译)

编译异常是在使用外部资源时,外部资源可能无法被正确获取因而产生的异常,是程序之外的外部因素,无法被程序控制。

因为无法被程序控制,总是存在出现的可能,所以当外部资源无法被正确获取时程序接下来因该如何运行需要给出明确的方案。

运行异常:在程序运行过程中才能检测出来的异常,运行异常程序员可以不处理(会逐级往上抛,直至抛给main方法再交给jvm处理),但可能会导致程序崩溃。运行异常是程序内部问题导致 如:NullPointerException

运行时异常是程序内部的问题,可以通过修改程序代码来避免产生异常的条件,可以保证不出现运行异常,所以运行异常可以不处理。

当Java程序抛出异常时,它会立即停止当前方法的运行并返回到该方法被调用的地方。如果未处理此异常,它将向上抛出并捕获或终止整个程序的执行。因此,在编写Java代码时,应该确保适当地处理所有可能发生的异常,以避免不必要的中断或程序崩溃

throw: 在指定位置抛出指定的异常

        throw new AException("异常原因");

        处理异常:

        if 如果AException 是RuntimeException or RuntimeException的子类(AException is 运行时异常),We don't have to deal with it,默认交给jvm处理。

        else AException 是编译时异常,程序员必须处理,方法签名后使用throws BException(BException 范围大于等于 AException,抛给方法调用者处理) or try-catch处理

自定义异常:

        必须继承Exception(运行时异常必须继承RuntimeException)

        2个构造方法

        无参构造,有参构造(一个String message 参数)

        其方法体中调用父类构造方法

package com.example.demo11.exception;public class MyException extends Exception {public MyException(){super();}public MyException(String message){super(message);}
}
package com.example.demo11;import com.example.demo11.exception.MyException;public class Demo11Application {public static void main(String[] args) {try {test();} catch (MyException e) {e.printStackTrace();}}public static void test() throws MyException{throw new MyException("test");}}

 

 运行异常

package com.example.demo11.exception;public class MyException extends RuntimeException {public MyException(){super();}public MyException(String message){super(message);}
}

运行异常 可以不处理

package com.example.demo11;import com.example.demo11.exception.MyException;public class Demo11Application {public static void main(String[] args) {test();}public static void test() {throw new MyException("test");}}

 

 


http://www.ppmy.cn/news/59349.html

相关文章

Java程序设计入门教程---循环结构(while)

目录 思考 概念 语法 案例:求1到100的整数和? 案例分析 思考 1. 让你输出10000000000000000句“Hello,world!”,你怎么写代码? 2. 求1到100的整数和? 概念 循环结构程序多次循环执行相同或相近的任务。 while循环…

NIST SP 800-193: BIOS 平台固件弹性指南

NIST SP 800-147,BIOS 保护指南 ( NIST SP 800-147 [1]、NIST SP 800-147B [2])解决了 BIOS 的保护问题 可从此处免费获得: https://doi.org/10.6028/NIST.SP.800-193 摘要 此文档提供了关于支持平台固件和数据对抗潜在地具有破坏性的攻…

第二届“强国青年科学家”获奖者均有海外经历

今天是五四青年节,为了弘扬五四精神,知识人网小编本期专门介绍10名第二届“强国青年科学家”获奖者。特别提示:这些科学家均具有海外留学或研究经历。 五四精神的核心内容为“爱国、进步、民主、科学”。 进一步弘扬科学精神,营造…

Redis的Java客户端

1.快速入门 Jedis使用的基本步骤&#xff1a; 1.引入依赖 2.创建Jedis对象&#xff0c;建立连接 3.使用Jedis&#xff0c;方法名与Redis命令一致 4.释放资源 <!--jedis依赖--> <dependency><groupId>redis.clients</groupId><artifactId>je…

2022全国职业技能大赛私有云搭建及注意事项

私有云 环境准备 基础配置搭建yum源修改openrc.sh计算节点分区脚本安装安装平台基本服务 环境准备 软件包&#xff1a; 答题云主机环境&#xff1b;CentOS-7-x86_64-DVD-2009.iso&#xff08;centos7.9&#xff09; iaas版本&#xff1b;chinaskills_cloud_iaas_v2.0.3.iso&…

如何使用Spring Boot Maven插件

Maven Maven用户可以继承spring-boot-starter-parent项目来获取合适的默认设置。该父项目提供以下特性&#xff1a; 默认编译级别为Java 1.6源码编码为UTF-8一个依赖管理节点&#xff0c;允许你省略普通依赖的<version>标签&#xff0c;继承自spring-boot-dependencies…

Photoshop如何使用滤镜之实例演示?

文章目录 0.引言1.将普通照片制作成油画效果2.使用液化滤镜修出完美身材3.用镜头光晕滤镜制作唯美的逆光人像4.用Camera Raw滤镜对偏色风景照进行调色 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及其…

国产ChatGPT命名图鉴

很久不见这般热闹的春天。 随着ChatGPT的威名席卷全球&#xff0c;大洋对岸的中国厂商也纷纷亮剑&#xff0c;各式本土大模型你方唱罢我登场&#xff0c;声势浩大的发布会排满日程表。 有趣的是&#xff0c;在这些大模型产品初入历史舞台之时&#xff0c;带给世人的第一印象其…