纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

guoyp2126   2021-10-13 我要评论
想了解java异常处理throws完成异常抛出详解的相关内容吗guoyp2126在本文为您仔细讲解java异常throws完成异常抛出的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java异常throws完成异常抛出,java异常处理下面大家一起来学习吧。

已检查异常抛出

对于已检查异常(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自定义注解 JAVA自定义注解详情

    想了解JAVA自定义注解详情的相关内容吗java-zh在本文为您仔细讲解JAVA自定义注解的相关知识和一些Code实例欢迎阅读和指正我们先划重点:JAVA注解,JAVA自定义注解下面大家一起来学习吧。..
  • Python读取二维码信息 怎样用Python从桌面读取二维码信息详解

    想了解怎样用Python从桌面读取二维码信息详解的相关内容吗初遇我ㄖ寸の热情呢?在本文为您仔细讲解Python读取二维码信息的相关知识和一些Code实例欢迎阅读和指正我们先划重点:python读取二维码信息,python识别二维码,python扫描二维码下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Musicdownload3mp.com 【飞音下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式