夯实Java基础(异常)

一、Java异常

1,异常是什么

异常指的是程序在运行是出现错误时通知调用者的一种机制。

2,几个关键字:try、catch、finally、throw、throws

• try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
• catch – 用于捕获异常。catch用来捕获try语句块中发生的异常。
• finally – finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
• throw – 用于抛出异常。
• throws – 用在方法签名中,用于声明该方法可能抛出的异常。

3,异常处理流程

  • 程序先执行try中的代码
  • try中的代码出现异常,就会终止,查看与catch中的异常类型是否匹配
  • 如果找到匹配类型,就执行catch中的代码
  • 否则,向上传递(调用者)
  • 无论是否匹配,finally都将会被执行
  • 若始终没有处理,就交给JVM处理

4,Java异常体系

在这里插入图片描述

5,自定义异常类

自定义异常通常会继承自 Exception 或者 RuntimeException
继承自 Exception 的异常默认是受查异常
继承自 RuntimeException 的异常默认是非受查异常.

二、举例

实现一个简单的控制台版用户登陆程序, 程序启动提示用户输入用户名密码. 如果用户名密码出错, 使用自定义异常的方式来处理

自定义异常类

package Java3_19;

public class LoginException extends Exception{
    public LoginException() {
        super();
    }

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

测试类

package Java3_19;

import java.util.Scanner;

public class Login {
    public String name = "admin";
    public String password = "1234546";


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = scanner.nextLine();
        System.out.println("请输入密码:");
        String password = scanner.nextLine();
        Login login = new Login();
        try {
            if (!name.equals(login.name)) {
                throw new LoginException("用户名错误!");
            }
            if (!password.equals(login.password)) {
                throw new LoginException("密码错误!");
            }
            System.out.println("登陆成功!");
        } catch (LoginException e) {
            System.out.println(e.getMessage());
        }
    }
}

发布了65 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44002167/article/details/104976027