Java语言----异常处理(看了必会)

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

目录

一.异常的概述

二.异常类的层次结构和种类

二.异常的基本用法

2.1异常的捕捉

2.2异常处理代码实现

三.抛出异常

3.1 throw

3.2 throws

四.finally的进一步详解

五.自定义异常类

总结


😽个人主页:tq02的博客_CSDN博客-C语言,Java领域博主

 🌈理想目标:努力学习,向Java进发,拼搏一切,找到一份朝九晚五,有假期的工作,让自己的未来不会有遗憾。
 🎁欢迎各位→点赞👍 + 收藏⭐ + 评论📝+关注✨

     本章讲解内容:异常的处理和介绍

      使用编译器:IDEA
Java语言----异常处理(看了必会)


一.异常的概述

          所谓的异常,就是指程序在运行时可能出现的一些不正常、错误的情况。                                 例如:除以 0、数组下标越界、类型转换失败、网络地址不能打开、文件不存在等。            异常指的就是程序在 运行时 出现错误时通知 调用者 的一种机制                 

 实例图:Java语言----异常处理(看了必会)

这就是异常,因为0不能为除数,所以出现了异常。而为什么说JVM显示异常,之后有讲解。


二.异常类的层次结构和种类

        Java为了对异常进行处理,预先已经对各种可能出现的异常定义了很多异常类,每个异常类都代表了一种运行错误或异常。

Java语言----异常处理(看了必会)

 这张图的最顶层是Throwable类,而它是所有异常或者错误的超类(父类),表中的顺序就是继承 。

而我们着重讲解一下(Exception类的子类):

                1.RuntimeException(运行时异常),此异常通常都是:算术异常类、空指针异常类、下标越界异常类、数组元素个数为负异常类等等。都是RuntimeException的子类

而以上的异常类在编译器的表达方式:ArithmeticEception、NullPointerException、IndexOutOfBoundsEception、ArrayIndexOutOfBoundsEcepiond。

                2.其它异常类:此异常通常是指:I/O异常、网络地址不能打开、文件未找到等,而这些异常类是指除了RuntimeException类,其他的所有类,而也称为受检类异常的类。

重点:

  1. 运行时异常类,都是代码出错而导致的,所以可以通过修改代码程序避免。 
  2. 受检类异常类,则出现的异常无法避免,必须通过使用try-catch-finally语句来捕获异常

二.异常的基本用法

2.1异常的捕捉

        捕捉?异常如何捕捉?如之前的代码图,这是Java的JVM捕捉出来的异常。但是我们可以自行捕捉异常。

异常处理语法:对可能存在的受检类异常的语句进行监控。

                          也可以对运行时异常进行监控。

Java语言----异常处理(看了必会)

 格式如上图,

  1. try块:监控区的工作是:对可能发生了异常的程序语句进行包围。只能有一个。
  2. catch块:捕捉处理区,可以存在多个
  3. finally块:不管监控区如何,此代码一定会实现,用于回收一些物理资源,如网络连接等。

2.2异常处理代码实现

受检类异常需要使用到其他的类,所以为了更好方便理解,我们现在对运行时异常处理进行代码实例。

  使用try{ }catch{ }处理异常的代码

Java语言----异常处理(看了必会)

使用try{ }catch{ }处理异常的代码Java语言----异常处理(看了必会)

 重点来了:如果不使用try{ }catch{ }的语法,那么Java的JVM会自行发现错误并告知。既然JVM会告知,那么为什么还要使用try{ }catch{ }语法呢?

      解释:如果程序发生了异常,系统会根据异常而终止程序运行,但如果用户想让程序继续执行,便可以通过使用try{ }catch{ }的语法处理异常。


三.抛出异常

3.1 throw

       抛出异常,是指告知编译器不要在乎该异常。Java程序定义好的程序异常或者错误时,由系统自动抛出,但是如果程序员想主动抛出异常,则可以使用throw。

代码实现:
 

public static void main(String[] args) {
    System.out.println(divide(10, 0));
}
public static int divide(int x, int y) {
    if (y == 0) {
    throw new ArithmeticException("抛出除 0 异常");
}
    return x / y;
}
// 执行结果
Exception in thread "main" java.lang.ArithmeticException: 抛出除 0 异常
at demo02.Test.divide(Test.java:14)
at demo02.Test.main(Test.java:9)

在这个代码中,我们可以根据实际情况来抛出需要的异常. 在构造异常对象同时可以指定一些描述性信息。

3.2 throws

        如果一个方法的头部申明该方法可能抛出异常了,则使用throws来完成。

语法格式:public void fun() throws 异常类{  .......   }

        使用 throws 声明抛出异常的一般情况是:当前方法不知道如何(或者不想)处理方法中可能发生的异常,于是不使用 try-catch 监控和捕捉异常,而是在方法声明中说明该方法将有可能抛出异常,由方法的上一级调用者处理,自己不再处理。可以理解为踢皮球,没有人想解决这个问题,直到有人愿意解决为止。

代码实例

public class Tex3 {
    public static void fun()throws IOException
{
    FileInputStream input = new FileInputStream("Ajava");
}
    public static void main(String[] args){
       try
       {
           fun();
       }catch(IOException e)
       {
           System.out.println("咳咳");
       }
    }
}

 从代码中,我们可以看出来。fun()函数使用了throws声明了抛出异常,从而不解决文件是否可以找到的,受检类异常。而当函数结束之后,异常就丢回给了调用者main() 函数,因此我们可以看见main函数中使用了try-catch 异常处理

四.finally的进一步详解

       finally是异常处理语法格式的最后一步,不管监控区是否出现了异常,都会执行,但是否想过一种特殊的情况,调用函数返回时呢?

例如代码:

public class Tex3 {
    public static int fun()
{
    int x=20;
   try
   {
       if(x>10)
           return 10;
   }catch(Exception e)
   {
   }
   finally{
       return 20;
   }
}
    public static void main(String[] args){
        System.out.println(fun());;
    }
}

      该代码返回的值为20,并非10,说明了一点,无论什么情况,一点会执行finally,哪怕返回值时,也需要执行finally;


五.自定义异常类

       用户定义的异常类都得继承Exception类,所以需要自定义时异常时,需要继承RuntimeException,且定义异常类时,需要提供2种构造函数:一种是无参数的构造函数,一种是带有一个字符串的构造函数。

1、自定义异常类继承Exception类代码:

public class MyException extends Exception {
    //异常信息
    private String message;

    //构造函数
    public MyException(String message){
        super(message);
        this.message = message;
    }

2.在要抛出异常的函数使用throws关键字

public class UseMyException {
    private String name;
    private String password;

    public UseMyException(String name,String password){
        this.name = name;
        this.password = password;
    }

    public void throwException(String password) throws MyException{
        if (!this.password.equals(password)){
            throw new MyException("密码不正确!");
        }
    }
}

3.测试,使用try-catch处理异常

public class TestException {

    @org.junit.Test
    public void test(){
        UseMyException ex = new UseMyException("admin","123");
        try{
            ex.throwException("1234");
        }catch (MyException me){
            System.out.println("MyException:"+me.getMessage());
        }
    }
}

以上便是自定义异常类的方法和步骤。


总结

       异常处理主要用于之后的文件、打开网络地址、输入输出I/O等。                                                     其次重要的是自定义异常类。慢慢看,一定一定要有耐心啊。

 最后再介绍一个printStackTrace()方法,用处,在异常处理中用于catch块,可以输出代码哪行有问题。使用方法:异常类名的形参名.printStackTrace()。文章来源地址https://www.toymoban.com/news/detail-410768.html

到了这里,关于Java语言----异常处理(看了必会)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java 异常处理以及如何捕获和处理多个异常

    在Java中,我们使用异常处理程序组件try,catch和finally块来处理异常。 为了捕获和处理异常,我们将try...catch...finally代码块放置在可能产生异常的代码周围。finally块是可选的。 try...catch...finally的语法为: 可能会生成异常的代码放在try块中。 每个try块后面应紧跟着catch 或 fi

    2024年02月14日
    浏览(43)
  • java异常处理机制(二)之异常处理与捕获

    1 Error(错误): 是指程序无法处理的错误,表示运行应用程序时比较严重的问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。 2 异常(Exception): 是指在程序执行时由于程序处理逻辑上的错误而导致程序中断的一种指令流。通俗的

    2024年02月05日
    浏览(107)
  • 12. Java异常及异常处理

    1. 异常 异常 :在程序执行过程中发生的意外状况,可能导致程序中断或产生错误结果 异常对象 :java(面向对象)将错误用类来描述,一旦程序执行错误,将会创建对应的错误对象(用以向程序员或用户展示错误原因等) 异常处理的意义 :提高代码的健壮性和可靠性,使程

    2024年02月07日
    浏览(40)
  • java异常处理机制(三)常见异常

    Java常见的异常包括但不限于以下几种: 1. NullPointerException(空指针异常):当试图调用实例方法或访问实例变量时,对象引用为 null 时抛出。 2. ArrayIndexOutOfBoundsException(数组越界异常):当访问数组中不存在的元素时抛出。 3. ClassCastException(类转换异常):当试图将对象强

    2024年02月05日
    浏览(51)
  • Java 中的异常类型、异常处理机制、最佳实践

    Java 异常是一种在程序运行时可能出现的错误或异常状况。它们可以由多种因素引起,例如无效输入、网络连接失败或系统资源不足等。 Java 提供了内置的异常类和处理机制,以便在程序出现异常时能够进行恰当的处理和响应。本文将探讨 Java 中的异常类型、异常处理机制以

    2024年02月08日
    浏览(60)
  • Java 异常处理机制(全)

    1.1  异常定义     (1)在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。     (2)

    2024年02月08日
    浏览(48)
  • Java中异常处理方式

    遇到异常不进行具体处理,而是继续抛给调用者(throw,throws)抛出异常有三种形式,一是 throw,一个 throws,还有一种系统自动抛异常。throws 用在方法上,后面跟的是异常类,可以跟多个;而 throw 用在方法内,后面跟的是异常对象。 在catch语句块中补货发生的异常,并进行处

    2024年02月04日
    浏览(36)
  • Java中的异常处理

    目录 前言: 异常简介:  Error类: Exception类: Exception异常: 运行异常:  编译异常: throw和throws:  throw: throws: try-catch: finally: 为啥叫受查异常? throw和throws的区别: 总结:         应该都听说过Java中的异常处理,其实不止Java中有异常处理,我们学过的其

    2024年01月17日
    浏览(39)
  • Java基础(四):异常处理

    在Java编程中,异常处理是一项非常重要的技能。异常指的是在程序执行期间发生的意外情况,例如 空指针引用 、 数组越界 、 文件读写错误 等等。Java提供了一套异常处理机制,使得程序员能够在代码中捕获并处理这些异常,从而保证程序的健壮性和可靠性。 在Java中,异常

    2024年02月11日
    浏览(38)
  • 【JAVA 异常处理机制】

    在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的错误和异常情况。异常处理机制可以帮助开发者优雅地处理异常,提高程序的健壮性和可靠性。 提示:以下是本篇文章正文内容,下面案例可供参考 java中所有错误的超类为:Throwable。其下有两个子类

    2024年02月11日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包