JAVA中的异常及处理

本文详细介绍了Java中的异常概念,包括异常的分类、抛出与捕获机制。同时,通过实例展示了如何自定义异常类,以及在登录场景中如何使用自定义异常进行错误处理。异常处理是Java编程中关键的错误管理策略,对于程序的健壮性至关重要。
摘要由CSDN通过智能技术生成

目录

一、异常的概念

1、异常的概念

2、常见的异常

3、异常的分类

4、异常的抛出

5、异常的捕获

二、自定义异常


一、异常的概念

1、异常的概念

在JAVA中,将程序执行过程中发生的不正常行为称为异常。

若在同一个程序中出现多个异常,则程序只会抛出一个异常!!!

2、常见的异常

1、算术异常

System.out.println(1/0);

//运行结果

Exception in thread "main" java.lang.ArithmeticException: / by zero

2、数组越界异常

int[] array={1,2,3,4,5};
System.out.println(array[10]);

//运行结果

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

3、空指针异常

int[] arr=null;
System.out.println(arr.length);

//运行结果

Exception in thread "main" java.lang.NullPointerException

3、异常的分类

1、编译时异常

在程序编译期间发生的异常,称为编译时异常,也称为受查异常。

2、运行时异常

 在程序执行期间发生的异常,称为运行时异常,也成为非受查异常。

RuntimeException及其子类对应的异常都称为运行时异常。

注:编译时出现的语法错误不能称之为异常。

4、异常的抛出

抛出异常的语法为:

throw new *********Exception("异常产生的原因")

下面为登录时异常的抛出,分别抛出用户名错误和密码错误:

 public static void loginInfo(String Username,String Password)throws UserNameException,WordPassException{
        if(!Username.equals(username)){
            throw new UserNameException("用户名错误!");
        }
        if(!Password.equals(password)){
            throw new WordPassException("密码错误!");
        }
        System.out.println("登录成功!!!");
    }

5、异常的捕获

1、try-catch捕获

语法格式:

try{

//可能出现异常的代码

}catch(要捕获异常的类型 e){

}

登录捕获异常方法1:

  try {
            loginInfo(name, word);//可能出现异常的代码
        } catch (UserNameException e) {
            e.printStackTrace();//对异常的处理
        } catch (WordPassException e) {
            e.printStackTrace();
        }

 2、throws

语法格式:

修饰符 返回值类型 方法名类型(参数列表) throws 异常类型1,异常类型2{

}

登录异常捕获方法2:

 public static void main(String[] args) throws UserNameException, WordPassException {

        System.out.println("请输入账号和密码:");
        Scanner scan = new Scanner(System.in);
        String name = scan.next();
        String word = scan.next();
        loginInfo(name,word);

    }

二、自定义异常

以登录程序为例:

1、自定义异常类,继承于Excetion,并且实现一个带有String类型参数的构造方法:

class UserNameException extends Exception{
    public UserNameException(String message){
        super(message);
    }
}

class WordPassException extends Exception{
    public WordPassException(String message){
        super(message);
    }
}

2、所以Login程序的代码为:

import java.util.*;

//自定义异常类
class UserNameException extends Exception{
    public UserNameException(String message){
        super(message);
    }
}

class WordPassException extends Exception{
    public WordPassException(String message){
        super(message);
    }
}

public class Login{

    public static String username="admin";
    public  static String password="123456";

    public static void loginInfo(String Username,String Password)throws UserNameException,WordPassException{
        if(!Username.equals(username)){
            throw new UserNameException("用户名错误!");
        }
        if(!Password.equals(password)){
            throw new WordPassException("密码错误!");
        }
        System.out.println("登录成功!!!");
    }
    public static void main(String[] args){
        System.out.println("请输入账号和密码:");
        Scanner scan=new Scanner(System.in);
        String name=scan.next();
        String word=scan.next();

        try {
            loginInfo(name,word);
        } catch (UserNameException e) {
            e.printStackTrace();
        } catch (WordPassException e) {
            e.printStackTrace();
        }
    }
}

注:

1、自定义异常通常继承于Exception或RuntimeException

2、继承于Exception的异常默认为受查异常

3、继承于RuntimeException的异常默认为非受查异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值