Java异常

一、异常的分类

Throwable是异常体系的顶层类,派生出Error和Exception两个子类。Error是Java虚拟机无法解决的重大问题,如JVM内部错误。Exception是我们平时所说的异常,异常分为受查异常和非受查异常,受查异常必须手动去用throw抛出和用try{}catch语句捕获(必须显式处理,如果不显式处理编译器会报错),非受查异常不需要手动去throw或try{}catch(不要求显式处理,不会有编译器检查)。处理异常的5个关键字:throw,throws,try,catch,final。

二、异常的捕获

throw用于抛出异常。throws用于对异常进行声明(写在方法的参数的后面,用来告诉方法的调用者当前方法内部会出现什么异常)。try,catch,final用于对异常进行捕获和处理。

try {
       //将可能出现异常的代码放在这里
}catch(要捕获的异常类型 e) {
      //如果try中的代码抛出异常了,此时catch捕获的异常类型与try中抛出的异常类型一致时,或者是try中抛出异常的父类时,
      //就会被捕获到,对异常就可以进行处理,处理完成后,跳出try-catch结构,继续执行后序代码
}catch(要捕获的异常类型 e) {
      //对异常进行处理
}finally {
      //此处代码一定会被执行到
}
    //当异常被捕获到时,异常被处理了,这里的代码就会执行
    //如果捕获异常时类型不对,那就没有捕获到异常,这里的代码就不会被执行

三、自定义异常

自定义异常实现登录,定义两个继承Exception类的异常类,在下载函数内部用throw抛出这两个异常,在下载函数名称处声明这两个异常,将调用下载函数写入try{}中,将这两异常以及异常的处理写入catch{}中。

import java.util.Scanner;
class UserPasswordException extends Exception {
    public UserPasswordException(String message) {
        super(message);
    }
}
class UserNameException extends Exception {
    public UserNameException(String message) {
        super(message);
    }
}
public class Login {
    private static String name = "zhangsan";
    private static String password = "123456";
    public static void loginException(String name1, String password1) throws UserNameException, UserPasswordException{
        if(!name1.equals(name)) {
            throw new UserNameException("用户名错误!");
        }
        if(!password1.equals(password)) {
            throw new UserNameException("密码错误!");
        }
        System.out.println("登陆成功!");
    }
    public static void main(String[] args) {
        while(true) {
            Scanner scanner = new Scanner(System.in);
            String name1 = scanner.nextLine();
            String password1 = scanner.nextLine();
            try {
                loginException(name1, password1);
            }catch(UserNameException e) {
                e.printStackTrace();
            }catch(UserPasswordException e) {
                e.printStackTrace();
            }
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值