【JavaSE】Java入门九(异常详解)

这篇具有很好参考价值的文章主要介绍了【JavaSE】Java入门九(异常详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

异常 

1.Java中异常的体系结构

2.异常的处理

3.自定义异常类


异常 

       在Java中,将程序执行过程中发生的不正常行为称为异常,C语言中没有这个概念,接下来我们重点需要掌握异常处理体系(try, catch, throw, finally)以及如何自定义异常类。

1.Java中异常的体系结构

异常的种类繁多,Java内部维护了一个异常的体系结构如下:【JavaSE】Java入门九(异常详解),【JavaSE】,java,开发语言

 Java中可以说是把所有的异常体系都封装了起来,在程序中遇到各种问题时,JVM会直接定位异常情况并在控制台提示。

其中Throwable是异常体系的顶层类,它的内部实现了让Java虚拟机抛出错误的代码。他派生出两个重要的子类Error和Exception。

Error:指的是Java虚拟机无法解决的严重问题,比如JVM的内部错误,资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError

Exception:异常产生后程序员可以通过代码进行处理的异常,使程序继续运行。

2.异常的处理

Exception异常的子类可以分为两种,一种是RunTimeException类,我们称为是运行时异常,其余的异常我们都称为是编译时异常。下面是异常处理的注意事项:

  1. 我们可以在方法体内部通过throw抛出一个Exception异常,异常一旦抛出后续代码就不会执行,我们可以通过异常捕获来使后续代码可以继续执行。
  2. 只有Exception异常和它的子类能被处理。
  3. 如果抛出的是运行时异常或者运行时异常的子类,可以不用处理,直接交给JVM来处理。
  4. 如果抛出的是编译时异常,用户必须处理,否则就无法通过编译。

 异常的处理流程:

1.throws声明异常

public void OpenConfig(String filename) throws FileNotFoundException{
if(filename.equals("config.ini")){
throw new FileNotFoundException("配置文件名字不对");
}
// 打开文件
}

一般在定义类的时候使用 ,如果方法内部抛出多个异常。throws后面必须跟多个异常类型,也可以直接声明他们的父类。

throws声明异常并没有进行处理,而是留给了调用者进行处理,调用者在调用声明抛出异常的方法时,必须对该异常进行处理,或者继续使用throws抛出。

2.try-catch捕获并处理

try {
int[] array = {1,2,3};
System.out.println(array[3]); // 此处会抛出数组越界异常
}catch (NullPointerException e){ // 捕获时候捕获的是空指针异常--真正的异常无法被捕获到
e.printStackTrace();
}

如上所示,try中存在异常代码,catch用来捕获异常,并通过printStackTrace()方法来打印该异常的详细信息。

3.try-catch-finally语句

       在实际应用中,异常的出现具有不确定性,那就导致了在try语句中异常出现位置之后的剩余代码面临着一个问题,如果该异常抛出了,剩余代码就不执行,没抛出就执行,写程序时有些代码我们希望无论程序是否发生异常都需要被执行,因此Java引入了finally语句。

语法格式:
try{
// 可能会发生异常的代码
}catch(异常类型 e){
// 对捕获到的异常进行处理
}finally{
// 此处的语句无论是否发生异常,都会被执行到
}
// 如果没有抛出异常,或者异常被捕获处理了,这里的代码也会执行

finally 执行的时机是在方法返回之前(try 或者 catch 中如果有 return 会在这个 return 之前执行 finally). 但是如果finally 中也存在 return 语句, 那么就会执行 finally 中的 return, 从而不会执行到 try 中原有的 return.

3.自定义异常类

Java 中虽然已经内置了丰富的异常类 , 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构.

 

具体方式:
1. 自定义异常类,然后继承自 Exception 或者 RunTimeException
2. 实现一个带有 String 类型参数的构造方法,参数含义:出现异常的原因
class UserNameException extends Exception {
public UserNameException(String message) {
super(message);
}
}
class PasswordException extends Exception {
public PasswordException(String message) {
super(message);
}
}

 tips: 文章来源地址https://www.toymoban.com/news/detail-768568.html

  • 继承自Exception的异常默认是受查异常(编译时异常)
  • 继承自RuntimeException的异常默认为非受查异常(运行时异常)

到了这里,关于【JavaSE】Java入门九(异常详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaSE-----认识异常【详解】

    目录 一.异常的概念与体系结构: 1.1异常的概念: 1.2一些常见的异常: 1.3异常的体系结构: 1.4异常的分类: 二.异常的处理机制: 2.1 抛出异常: 2.2异常的捕获:  2.3try-catch-(finally)捕获并处理:  2.4Throwable类中的常用方法: 三.自定义异常: java中常见的异常: 1. runtime

    2024年03月18日
    浏览(44)
  • JAVA JDBC数据库开发详解:从入门到精通

    简介: Java是一种面向对象,安全灵活的编程语言,已经成为了世界上最流行的编程语言之一。Java语言的一个重要应用领域就是数据库开发。通过Java JDBC(Java Database Connectivity) API,开发人员可以使用Java语言来访问并操作各种数据库。 本篇资料将会详细介绍Java JDBC数据库

    2024年02月02日
    浏览(42)
  • 编程开发8大语言详解,为什么Java是我最推荐的?

    很多没有接触过编程语言的同学,都会觉得编程开发特别高端和神奇,担心理解不了更担心学不会。 当然,也有人会认为,你既然是做编程的,那么你应该什么都会,什么软件的开发都能完成,这是平哥经常听到的两种声音。 在此,平哥需要给大家科普一下, 编程确实改变

    2024年02月05日
    浏览(69)
  • 【JavaSE】Java进阶知识一(泛型详解,包括泛型方法,协变,逆变,擦除机制)

    目录 泛型 1. 什么是泛型 2.泛型方法 3.通配符上界(泛型的协变) 4.通配符下界(泛型的逆变) 5.泛型的编译(擦除机制)         泛型:就是让一个类能适用于多个类型,就是在封装数据结构时能让封装的类型被各种类型使用所以引入了泛型的概念,虽然有了泛型,什么数

    2024年02月04日
    浏览(43)
  • Java语言----异常处理(看了必会)

    目录 一.异常的概述 二.异常类的层次结构和种类 二.异常的基本用法 2.1异常的捕捉 2.2异常处理代码实现 三.抛出异常 3.1 throw 3.2 throws 四.finally的进一步详解 五.自定义异常类 总结 😽个人主页:tq02的博客_CSDN博客-C语言,Java领域博主  🌈理想目标:努力学习,向Java进发,拼搏

    2023年04月11日
    浏览(58)
  • Java异常类详解

    目录 异常简介: 异常体系: 异常的处理: 自定义异常类:     1.1  异常定义: 异常是运行程序的过程中产生的异常情况。 异常的情况是指程序在运行过程中,可能由于外界条件的变更(不设想的不一致)导致出现错误的情况(如数据库连接) 异常不同于常态,在程序运

    2024年02月04日
    浏览(21)
  • JAVA之异常详解

     在Java中,将程序 执行过程中发生的不正常行为称为异常  1. 算术异常  因为 0 不能当被除数,所以报出了异常,这种异常就叫作算数异常  2. 数组越界异常 3. 空指针异常 java中不同类型的异常,都有与其对应的类来进行描述。 Java内部维护了一个异常的体系结构: 从上图

    2024年02月05日
    浏览(19)
  • Java中异常处理-详解

    JVM 默认处理方案 把异常的名称,异常的原因,及异常出错的位置等信息输出在控制台 程序停止执行 异常类型 编译时异常 必须显示处理,否则程序会发生错误,无法通过编译 运行时异常 无需显示处理,也可以和编译时异常一样处理 代码示例: 异常处理三种方式 try…catc

    2024年02月02日
    浏览(30)
  • Java入门7(异常处理,list集合)

    一般来讲,程序出现错误的时候,大致情况有三种: 语法错误 运行时错误,指的是各程序运行的时候,出现的一些没有想到的问题,比如除数为0,比如数组下标越界等等 逻辑错误,运行结果和与其结果不一致,俗称bug ⭐Java中的异常处理机制主要用于处理运行时错误 ​运行

    2024年02月03日
    浏览(49)
  • 阿里Java开发手册~异常处理

    1. 【强制】 Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该 通过 catch 来处理,比如: IndexOutOfBoundsException , NullPointerException 等等。 说明: 无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过 catch NumberFormatException 来实现

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包