iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java异常处理机制实例分析
  • 458
分享到

Java异常处理机制实例分析

2023-06-29 11:06:13 458人浏览 薄情痞子
摘要

这篇文章主要介绍“Java异常处理机制实例分析”,在日常操作中,相信很多人在Java异常处理机制实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常处理机制实例分析”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“Java异常处理机制实例分析”,在日常操作中,相信很多人在Java异常处理机制实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常处理机制实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

异常处理机制的底层原理

  • 抛出异常,在执行一个方法时,如果发送了异常,则这个方法生成代表该异常的一个对象,停止当前执行的 路径,并把异常提交给jre。

  • 捕获异常:jre得到该异常后,虚招相应的代码来处理该异常。jre在方法的调用栈中查找,从生成异常的 方法开始回溯,直到找到相应的异常处理代码为止。

异常的继承关系图

Java异常处理机制实例分析

欧克,我们现在知道异常的定义是什么,那我们就应该如何去捕捉异常,然后去处理异常。

异常的处理

一、try-catch-finally 结构

首先我们先看一段代码:

package AbnORMalTest;import java.util.InputMismatchException;import java.util.Scanner;public class test1 {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        try {            System.out.print("请输入被除数:");            int a = input.nextInt();            System.out.print("请输入除数:");            int b = input.nextInt();            int sum = b/a;            System.out.println("结果是:"+sum);            System.out.println("程序无异常,执行完毕!");        }catch (Exception e){               //通用异常        //printStackTrace()方法是将堆栈异常的错误信息打印出来(后期学习框架后我们一般提交或 者回滚事务)            e.printStackTrace();            System.out.println("程序异常,请重试!");            return ;        }finally {            //不管是否发生了异常,都会执行finally内的代码,通常用于资源的关闭            System.out.println("------------------------------");            System.out.println("程序结束,资源已经关闭,欢迎再次使用");            input.close();   //关闭Scanner对象,节省资源        }    }}

代码解释:

上述代码中有try-catch-finally结构,他们分别的作用是什么?

try:我们把可能出现异常的代码用try去包括起来

catch :只要try代码块里面的代码运行时发生了异常,就会进入catch来捕捉异常

finally:不管之前代码怎么执行,都会执行finally的代码块!!

运行结果示例:

正常时:

Java异常处理机制实例分析

异常时:

当被除数为0时,将会触发异常,进入catah内进行捕捉,但是不管有没有异常,都会执行finally内的程序输出:程序结束,资源已经关闭,欢迎再次使用

Java异常处理机制实例分析

二、多catch处理不同的异常:

我们知道,在一段代码中可能不止一个异常,比如上述代码,可能存在被除数为0的异常,也可能输入字符进行计算的输入异常,或者可能存在数字格式化异常等等,这样我们就可以使用多catch来捕捉异常:

还是以上面的代码为例:

import java.util.InputMismatchException;import java.util.Scanner;public class test1 {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        try {            System.out.print("请输入被除数:");            int a = input.nextInt();            System.out.print("请输入除数:");            int b = input.nextInt();            int sum = b/a;            System.out.println("结果是:"+sum);            System.out.println("程序无异常,执行完毕!");        }catch (InputMismatchException  e){                    //多重catch结构,这里捕捉输入异常            e.printStackTrace();            System.out.println("程序输入异常,请重试!");        }catch (Exception e){                                 //这里捕捉通用异常(其他异常都可以在这里进行捕捉)                        e.printStackTrace();            System.out.println("程序异常,请重试!");            return ;        }finally {            //不管是否发生了异常,都会执行finally内的代码,通常用于资源的关闭            System.out.println("------------------------------");            System.out.println("程序结束,资源已经关闭,欢迎再次使用");            input.close();   //关闭Scanner对象,节省资源        }    }}

当输入不是为数字的时候:

Java异常处理机制实例分析

这样我们可以看出,在第一个catch内就已经捕捉到了

三、throws 声明异常/throw 抛出异常:

假设我定义了一个方法,告知该方法可能会发送某种异常(声明异常),调用者调用该方法的时候就务必要对该异常进行处理。

首先我们定义一个错误类:

学生类:

package ExceptionText;public class Student {    private String name;    private int age;    private char sex;    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public char getSex() {        return sex;    }    public void setAge(int age) throws Exception {        if (age < 101 && age > 0) {            this.age = age;        } else {            throw new Exception("年龄输入有误!");        }    }    public void setSex(char sex) throws Exception {        if (sex == '男' || sex == '女') {            this.sex = sex;        } else {            throw new Exception("性别输入有误");        }    }}

测试类:

package ExceptionText;public class TestMain {    public static void main(String[] args) {        Student stu = new Student();        stu.setName("小红");        try {            stu.setAge(50);            stu.setSex('k');            System.out.println("我叫:"+stu.getName()+"年龄:"+stu.getAge()+"我的性别是:"+stu.getSex());        } catch (Exception e) {            e.printStackTrace();        }    }}

当出入都正确的时候:

Java异常处理机制实例分析

当年龄输入不正确的时候:

Java异常处理机制实例分析

当性别输入不正确的时候:

Java异常处理机制实例分析

注意:如果存在多个异常,那么会抛出第一个出现的异常。

四、自定义异常:

当RuntimeException的运行时异常的子类无法满足我们的需求的时候,我们也可以自定义运行时异常和抛出自定义的异常信息来满足我们的需求,但是要注意:自定义的运行时异常要继承RuntimeException!!!

自定义异常类:

//这个类是继承了RuntimeExceptionpublic class AgeException extends RuntimeException {   //构造方法   public AgeException(String message) {       super(message);   }}

学生信息类:

package CustomizeException;public class Student {    private String name;    private int age;    private char sex;    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public char getSex() {        return sex;    }    //方法    //使用throws 来声明异常,就是这个方法内可能存在异常,先事先声明    public void setAge(int age) throws Exception {        if (age < 101 && age > 0) {            this.age = age;        } else {            //如果不符合上面的if判断            throw new Exception("年龄输入有误!");   //这里就要用thrwo 来抛出异常,        }    }    public void setSex(char sex) throws Exception {        if (sex == '男' || sex == '女') {            this.sex = sex;        } else {            throw new AgeException("这是自定义异常,性别输入有误");        }    }}

测试类:

package ExceptionText;public class TestMain {    public static void main(String[] args) {        Student stu = new Student();        stu.setName("小红");        try {            stu.setAge(18);            stu.setSex('女');            System.out.println("我叫:"+stu.getName()+"年龄:"+stu.getAge()+"我的性别是:"+stu.getSex());        } catch (Exception e) {            e.printStackTrace();        }    }}

这个部分的代码和上面第三部分的一致,可以参考上面的示例。

五、常见的异常

Java异常处理机制实例分析

到此,关于“Java异常处理机制实例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Java异常处理机制实例分析

本文链接: https://www.lsjlt.com/news/324559.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java异常处理机制实例分析
    这篇文章主要介绍“Java异常处理机制实例分析”,在日常操作中,相信很多人在Java异常处理机制实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常处理机制实例分析”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • Java异常处理机制的示例分析
    这篇文章给大家分享的是有关Java异常处理机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.初识异常我们在写代码的时候都或多或少碰到了大大小小的异常,例如:public class&nbs...
    99+
    2023-06-26
  • Java中异常处理机制的示例分析
    这篇文章给大家分享的是有关Java中异常处理机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能...
    99+
    2023-06-03
  • C语言异常处理机制实例分析
    本篇内容主要讲解“C语言异常处理机制实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言异常处理机制实例分析”吧!异常处理机制:setjmp()函数与l...
    99+
    2024-04-02
  • Python异常处理机制的示例分析
    这篇文章将为大家详细讲解有关Python异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是异常?def num(a, b):   ...
    99+
    2023-06-22
  • Java中try-catch-finally异常处理机制的示例分析
    小编给大家分享一下Java中try-catch-finally异常处理机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、异常处理异常(Excepti...
    99+
    2023-06-20
  • java异常处理机制原理和应用的示例分析
    这篇文章主要介绍了java异常处理机制原理和应用的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Java异常简介大家对trycatch可能并不陌生,也都使用的非常...
    99+
    2023-06-29
  • Golang中异常处理机制的示例分析
    小编给大家分享一下Golang中异常处理机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异...
    99+
    2023-06-15
  • C语言异常处理机制的示例分析
    这篇文章将为大家详细讲解有关C语言异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。异常处理机制:setjmp()函数与longjmp()函数  C标准库提供两个特殊的函数:setjmp...
    99+
    2023-06-20
  • Python异常处理实例分析
    这篇文章主要讲解了“Python异常处理实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python异常处理实例分析”吧!那么什么是异常呢?举个例子:这里当然假设用户的输入是正确的,但...
    99+
    2023-07-02
  • 【JAVA 异常处理机制】
    文章目录 前言1.java异常处理机制2.try-catch3.finally块4.自动关闭特性5.throw关键字6.throws关键字7.throws的重写规则8.异常分类9.异常API10.自定义异常总结: 前言 在Ja...
    99+
    2023-08-23
    java 开发语言 学习 intellij idea
  • SpringMVC异常处理机制与自定义异常处理方式的示例分析
    这篇文章主要介绍SpringMVC异常处理机制与自定义异常处理方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!提到异常处理,就不得不提HandlerExceptionResolvers,我们的Dispat...
    99+
    2023-06-25
  • SpringBoot中异常处理实例分析
    这篇文章主要介绍“SpringBoot中异常处理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中异常处理实例分析”文章能帮助大家解决问题。一、背景在我们编写程序的过程中,...
    99+
    2023-06-30
  • Java中异常处理的示例分析
    这篇文章主要介绍Java中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常的定义在java中,异常就是java在编译、运行或运行过程中出现的错误总共有三种:1.编译错误 2.运行错误 3.逻辑错误...
    99+
    2023-06-25
  • Java的异常处理机制
    本篇内容介绍了“Java的异常处理机制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java 异常处理异常是程序中的一些错误,但并不是所有的...
    99+
    2023-06-02
  • Java异常的处理机制
    图片解析: 1.生成字节码文件的过程可能产生编译时异常(checked),由字节码文件到在内存中加载、运行类此过程可能产生运行时异常(unchecked), 2.JAVA程序在执行...
    99+
    2024-04-02
  • 怎样解析Java的异常处理机制
    这期内容当中小编将会给大家带来有关怎样解析Java的异常处理机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。你觉得自己是一个Java专家吗是否肯定自己已经全面掌握了Java的异常处理机制在下面这段代码中...
    99+
    2023-06-17
  • C++异常处理机制及常见问题分析
    C++异常处理机制及常见问题分析引言:C++是一种强大的编程语言,它提供了异常处理机制来处理程序运行过程中的错误和异常情况。异常处理是一种控制流程的机制,用于在特定的条件下,将控制从当前执行点转移到另一个处理点。本文将介绍C++中的异常处理...
    99+
    2023-10-22
    C++异常处理 问题分析
  • Java SpringMVC拦截器与异常处理机制详解分析
    目录拦截器(interceptor)的作用拦截器快速入门案例:用户登录权限控制拦截器方法说明SpringMVC异常处理异常处理的思路异常处理两种方式拦截器(interceptor)的...
    99+
    2024-04-02
  • Python中的异常处理实例分析
    一、什么是异常在python中,错误触发的异常如下二、异常的种类在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。1 、常用异常类AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有...
    99+
    2023-05-16
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作