我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java异常处理throws完成异常抛出详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java异常处理throws完成异常抛出详解

已检查异常抛出

对于已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译。但调用的方法没有能力处理这种异常,对于这种情况,可以在方法声明处使用throws子句来声明抛出异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。如:在service层读取文件,如果文件不存在,则需要将文件不存在的这条信息反馈给用户。要求在service层将此异常向上抛,用户层调用services层获取此条信息,反馈给用户。示例代码如下:
创建类ReadFile为业务类,该类中方法 readTxtFile需要读取硬盘上的文件,操作文件时会抛出IOException,但业务类并不能将发生异常信息推送给前端用户,此时将异常向上抛,延迟到调用方进行处理。


public class ReadFile {
    public void readTxtFile(String filePath) throws IOException {
        String encoding = "GBK";
        File file = new File(filePath);
        InputStreamReader read = new InputStreamReader(
                new FileInputStream(file), encoding);//考虑到编码格式
        BufferedReader bufferedReader = new BufferedReader(read);
        String lineTxt = null;
        while ((lineTxt = bufferedReader.readLine()) != null) {
            System.out.println(lineTxt);
        }
    }
}

在方法中使用throws IOException向上抛出异常,异常种类为IO操作异常。main方法为调用方,调用方通过try catch获取异常,并将异常输出至控制台,代码如下


    public static void main(String[] args)  {
        ReadFile readFile = new ReadFile();
        try {
            readFile.readTxtFile("d://temp1.txt");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e.toString());
        }
    }

执行结果如下:

在这里插入图片描述

自定义异常抛出

在编程过程我们会根据业务规则,将一些不符合业务规则的操作也可以定义为异常。这时我们就需要使用到自定义异常,如果在实现方法中无法处理这种异常,这些异常还需向上抛出。

Java 可通过继承的方式编写自己的异常类,自定义异常类均继承自 Exception 类,个可完成异常类编写。如:用户登录时再service层有一个方法,用户名不存在或者密码不正确,均为异常,这时就需要用户自定义异常。该方法是业务层方法,无法将异常直接反馈给操作用户,需要通过交互层(如:controller)调用该方法时,捕获此种异常并将该异常返回给前端。具体示例代码如下:
首先定义简单的自定义异常类LoginException,代表是登录异常类。Exception 是所有异常类的父类,该类中已经封装了异常信息输出、异常发生位置描述等方法,提供复用。

LoginException类继承异常类Exception


public class LoginException extends Exception {

    public LoginException(String message){
        super(message);
    }
}

编写业务代码Login,定义方法loginDemo,该方法抛出异常LoginException,根据业务规则抛出异常


public class Login {
    public void loginDemo(String userName, String psw) throws LoginException {

        if (!userName.equals("张三")) {
            throw new LoginException("用户名错误!");
        } else if (!psw.equals("000000")) {
            throw new LoginException("密码错误!");
        }
        System.out.println("登录成功!");
    }
}

调用代码为:


 public  static void loginDemo(String name,String psw){
        Login login = new Login();

        try {
            login.loginDemo(name,psw);
        } catch (LoginException e) {
            e.printStackTrace();
        }
    }

执行结果为

在这里插入图片描述

对于上述简单的异常处理,我们一般直接使用throw new Exception(""),无需定义新的异常类,代码可以修改如下:


public class Login {
    public void login(String userName, String psw) throws Exception {

        if (!userName.equals("张三")) {
            throw new Exception("用户名错误!");
        } else if (!psw.equals("000000")) {
            throw new Exception("密码错误!");
        }
        System.out.println("登录成功!");
    }
}

结论

在软件开发的很多场景中,方法并不具有处理异常的能力,如在业务层代码或取的异常,需要将异常的信息通过交互层的代码反馈给使用者(当然也可以通过方法返回值进行反馈,但这种返回只能是简单的)。

异常向上抛出是指在方法中产生异常或获取异常后并不做任何处理,而是将“皮球”踢给调用方,调用方继续踢给它的下一级调用方,还是自己处理那是调用方的事情。向调用方抛出异常在方法的声明处使用throws关键字,后面跟要抛出异常的类型,也可以是多种类型异常,不同的异常用逗号隔开。

如:test方法执行时可能会抛出三种异常


public static void test(int a) throws TestAException, TestBException,TestCException{
//业务代码
}

在向上抛出异常时,通常会使用到throw,就是在一个方法的内部,当异常发生时抛出一个自定义的异常。

以上就是java异常处理throws完成异常抛出详解的详细内容,更多关于java异常throws完成异常抛出的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java异常处理throws完成异常抛出详解

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

下载Word文档

猜你喜欢

Java中使用throw-throws抛出异常如何解决

这篇文章将为大家详细讲解有关Java中使用throw-throws抛出异常如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、throws抛出异常 如果一个方法可能会出现异常
2023-06-20

JAVA异常与异常处理详解

一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?(推荐:java视频教程)1.Java中的所有不正常类都继承于Throwable类。Throwab
JAVA异常与异常处理详解
2020-06-12

Java 中 join()方法抛出的异常该如何处理?(java join()方法抛出的异常如何处理)

在Java编程中,join()方法是用于等待线程终止的重要工具。然而,在使用join()方法时,可能会遇到各种异常情况。本文将详细介绍join()方法抛出的异常以及如何处理这些异常。
Java 中 join()方法抛出的异常该如何处理?(java join()方法抛出的异常如何处理)
Java2024-12-19

java抛出空指针异常如何处理

在Java中,可以使用以下方法来处理空指针异常:使用条件判断:在可能出现空指针异常的地方使用条件判断来检查对象是否为空。例如:if (object != null) {// 执行操作} else {// 处理空对象的情况}使用try-c
java抛出空指针异常如何处理
2024-02-29

JS中异常抛出和处理方法图文详解

JavaScript和其他语言一样,都拥有捕获异常的机制,下面这篇文章主要给大家介绍了关于JS中异常抛出和处理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-16

如何在java项目中抛出一个异常处理

本篇文章为大家展示了如何在java项目中抛出一个异常处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java 抛出异常处理的方法为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处
2023-05-31

java mockito模拟抛出异常怎么解决

在使用Mockito模拟方法抛出异常时,可以使用Mockito的doThrow()方法来模拟方法抛出异常。下面是一个简单的示例:假设有一个UserService类,其中有一个方法getUserById(),当传入的id为null时会抛出N
java mockito模拟抛出异常怎么解决
2024-03-13

java抛出异常throw问题怎么解决

在Java中,可以使用try-catch语句来处理抛出的异常。当抛出异常时,可以在try块中编写可能会引发异常的代码,并在catch块中编写处理异常的代码。示例:```javatry {// 可能引发异常的代码throw new Excep
2023-09-12

在 Java 中,如何正确处理 getResources 方法可能抛出的异常?(java中getresources怎样处理异常)

在Java编程中,getResources方法是用于获取类路径下的资源文件的重要方法。然而,在使用该方法时,我们经常会遇到需要处理可能抛出的异常情况。本文将详细介绍在Java中如何处理getResources方法可能抛出的异常,以帮助
在 Java 中,如何正确处理 getResources 方法可能抛出的异常?(java中getresources怎样处理异常)
Java2024-12-17

Java异常处理:理解异常类型和处理策略

通过合理的异常类型选择和适当的异常处理策略,我们可以提高程序的稳定性和可靠性。

PHP异常处理:自定义异常类详解

php 中的自定义异常类允许开发者创建特定于应用程序的异常类型,添加额外的信息和处理逻辑。通过继承自 exception 类,自定义异常类可以包含属性(如错误代码)和方法(如获取错误详细信息)。这增强了 php 的异常处理机制,提供了更灵活
PHP异常处理:自定义异常类详解
2024-05-14

Python异常处理详解

在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很复
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录