Java异常类

Java异常类

        所谓异常就是程序运行时可能出现的一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误做出处理。

1、基本概述

        Java异常类有两种:1、Error异常 2、Exception异常。程序员通常只能处理Exception异常,而对Error异常无能为力。

        本章主要对Exception异常进行叙述 。Java提供的是异常处理的抛抓模型。如果一个方法内抛出异常,该异常会被抛到调用方法中。如果异常没有在调用方法中处理,它继续被抛给这个调用方法的调用者。这个过程将一直继续下去,直到异常被处理或这个异常回到main方法中,并且main 方法也不处理,则程序运行终止,这一过程称为捕获(catch)异常。

        常见的一些Exception异常

//NullPointerException(空指针异常)
  public void test(){
  int[] arr = null;
  System.out.println(arr[1]);
  }
  
 //IndexOutOfBoundsException(下标越界异常)
  public void test(){
  //ArrayIndexOutOfBoundsException(数组下标越界异常)
  Byte[] bytes = new Byte[3];
  System.out.println(bytes[4]);
  }
  
  //ClassCastException(类型转换异常)
  public void test(){
  Object obj = new Boolean(true);
  String str = (String)obj;
  }
  
  //NumberFormatException(数字格式化异常)
  public void test(){
  String str = "abcd";
  int num = Integer.parseInt(str);
  }
  
 //ArithmeticException(算术运算异常)
  public void test(){
  int num1 = 3;
  int num2 = 0;
  int num3 = 3 / 0;
  }
 ​
 //InputMismatchException(输入不匹配异常)
  public void test(){
  Scanner scanner = new Scanner(System.in);
  int i = scanner.nextInt();
  System.out.println(i);
  scanner.close();
  }

        

2.抛抓语句

        Java使用try-catch-finally语句来处理异常,将可能出现的异常类操作放在try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try部分将立刻结束执行,转向执行相应的catch部分,所以程序可以将发生异常后的处理放在catch部分。finally语句是无条件执行的语句,通常在finally语句块中完成资源的释放或关闭。因为finally中的代码比较有保障,即使try语句块中的代码出现异常,finally中代码也会正常执行。

try{
     ......  //可能产生异常的代码
 } catch( ExceptionName1 e ){
     ......  //当产生ExceptionName1型异常时的处置措施
 } catch( ExceptionName2 e ){
     ......  //当产生ExceptionName2型异常时的处置措施
 } [finally{
     ......   //无条件执行的语句
         }]

 //catch中常出现有关信息
 String getMessage( ):
     用来得到有关异常事件的信息
 void printStackTrace( ) :
     用来跟踪异常事件发生时执行堆栈的内容。

        

3、自定义异常类

        这里简单模拟登陆操作,检测到密码不正确则抛出异常

自定义异常类的使用步骤如下:

1、自定义异常类继承Exception类

/**
 * 自定义异常类
 */
public class MyException  extends Exception {
    // 异常信息
    private String message;

    // 构造函数
    public MyException(String message) {
        super(message);
        this.message = message;
    }

    /**
     * 获取异常信息,由于构造函数调用了super(message),可以不用重写该方法
     * public String getMessage() {
     *     return message
     * }
     */
}

2、在要抛出异常的函数使用throws关键字

public class User {

    private String username;
    private String password;

    public User(){}
    public User(String username,String password) {
        this.username = username;
        this.password = password;
    }

    public void checkUsernameAndPassword(String username,String password) throws MyException{
        if ((!this.username.equals(username)) || (!this.password.equals(password))){
            throw new MyException("用户名或不正确!");
        }
    }
}

 3、测试,使用try-catch处理异常

public class Test {
    public static void main(String[] args) {
        User user = new User("admin", "a23456");
        try {
            user.checkUsernameAndPassword("admin","123456");
        } catch (MyException e) {
            System.out.println(e.getMessage());
        }
    }
}

以上就是自定义异常类的简单使用,有什么问题欢迎一起讨论~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值