广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java异常处理throws完成异常抛出详解
  • 587
分享到

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

2024-04-02 19:04:59 587人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

已检查异常抛出 对于已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译。但调用的方法没有能力处理这种异常,对于这种情况,

已检查异常抛出

对于已检查异常(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完成异常抛出的资料请关注编程网其它相关文章!

--结束END--

本文标题: java异常处理throws完成异常抛出详解

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

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

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

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

下载Word文档
猜你喜欢
  • java异常处理throws完成异常抛出详解
    已检查异常抛出 对于已检查异常(checked exceptions),编译器强制要求捕获并处理可能发生的异常,不处理就不能通过编译。但调用的方法没有能力处理这种异常,对于这种情况,...
    99+
    2022-11-12
  • 简述Java中throw-throws异常抛出
    目录一、throws抛出异常 Throws抛出异常的规则:二、使用throw抛出异常 三、比较 3.1 在声明方法时候抛出异常  3.2 在方法中抛出异常  &n...
    99+
    2022-11-12
  • Java中使用throw-throws抛出异常如何解决
    这篇文章将为大家详细讲解有关Java中使用throw-throws抛出异常如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、throws抛出异常   &...
    99+
    2023-06-20
  • Java异常分类处理抛出捕获操作详解
    目录什么是异常1.算术异常2.数组越界异常3.空指针异常异常的分类异常的抛出(throw关键字)异常的捕获throws关键字try catch关键字finally关键字总结什么是异常...
    99+
    2022-11-13
  • JAVA异常与异常处理详解
    一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?(推荐:java视频教程)Java中的所有不正常类都继承于Throwable类...
    99+
    2020-06-12
    JAVA
  • Go语言错误处理异常捕获+异常抛出
    目录一、error变量可以做什么1.定义一个error变量2.错误的处理3.做函数返回值4.做函数参数二、模拟异常的捕获与抛出1.defer简介2.使用recover模拟异常的捕获3...
    99+
    2022-11-13
  • JS中异常抛出和处理方法图文详解
    目录抛出异常抛出的表达式类型基本数据类型对象类的实例对象Error 类的实例对象Error 的子类处理异常js中常见的系统异常:总结抛出异常 在 js 中,有时候我们需要处理一些异常...
    99+
    2022-11-16
    js 抛出异常 js的异常处理 js捕获异常的方法
  • JS调用C++函数抛出异常及捕捉异常详解
    目录总结本文讲述如何利用v8::TryCatch捕捉js代码中发生的异常。 首先,声明TryCatch对象。 v8::TryCatch trycatch( isolate ); ...
    99+
    2022-11-12
  • Java中的异常处理(try,catch,finally,throw,throws)
    目录抛出异常throwObjects非空判断声明异常throws捕获异常try…catchfinally 代码块异常注意事项前言: Java异常处理的五个关键字:try...
    99+
    2022-11-13
  • java异常:异常处理--try-catch结构详解
    目录总结 从键盘接收两个整数,输出两数的商: package java_exception; import java.util.Scanner; public clas...
    99+
    2022-11-12
  • java抛出异常throw问题怎么解决
    在Java中,可以使用try-catch语句来处理抛出的异常。当抛出异常时,可以在try块中编写可能会引发异常的代码,并在catch...
    99+
    2023-09-12
    java
  • 如何在java项目中抛出一个异常处理
    本篇文章为大家展示了如何在java项目中抛出一个异常处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java 抛出异常处理的方法为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处...
    99+
    2023-05-31
    java ava 目中
  • 详解以go思想去处理js异常抛弃trycatch
    目录errors错误处理的方式如何定义一个错误最佳实践errors 错误处理在编程中是不可避免的一部分,在程序开发过程中,不可必要的会出现各种的错误,是人为也可能是失误,任何不可预...
    99+
    2023-03-08
    go思想处理js异常 go异常处理
  • JS异常抛出和处理的方法是什么
    今天小编给大家分享一下JS异常抛出和处理的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。抛出异常在 js 中,有时...
    99+
    2023-07-04
  • Java SpringMVC异常处理机制详解
    目录异常处理的思路测试环境准备异常处理两种方式方式一:简单异常处理器方式二:自定义异常处理器总结异常处理的思路 测试环境准备 首先写一个DemoController控制层的类作为测...
    99+
    2022-11-12
  • Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
    Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 Simple...
    99+
    2022-11-12
  • Java 详解异常的处理机制
    目录1.异常概述与异常体系结构1.1异常概述1.2运行时异常与编译时异常1.3异常体系结构2.常见异常1.ArrayIndexOutOfBoundsException2.NullPo...
    99+
    2022-11-12
  • Java基础之异常处理详解
    目录Exception 类的层次Java 内置异常类异常方法捕获异常throws/throw 关键字finally关键字try-with-resources声明自定义异常通用异常异常...
    99+
    2023-05-17
    Java异常处理机制 Java异常处理 Java异常
  • Python异常处理详解
    在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很...
    99+
    2023-01-30
    详解 异常 Python
  • FeignClient服务器抛出异常客户端处理方案
    目录FeignClient服务器抛出异常客户端处理feign异常拦截器FeignClient异常合集Mark问题1问题2FeignClient服务器抛出异常客户端处理 在使用feig...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作