JAVA异常捕捉机制进阶实例 通过赋初值或接收用户通过键盘输入的方式为表示用户名和密码的两个String类对象赋值,然后进行判断,如果用户名或密码为null,抛出自定义异常并结束程序;如果输入密码长

通过赋初值或接收用户通过键盘输入的方式为表示用户名和密码的两个String类对象赋值,然后进行判断,如果用户名或密码为null,抛出自定义异常并结束程序;如果输入密码长度小于6个字符,抛出自定义异常并结束程序;如果用户名和密码不等于事先指定的字符串,抛出自定义异常并结束程序;否则输出提示“用登录成功”。

  • 思路
    首先,我们要明确这次任务的目的,在console 中输入 账号和密码,然后我们要利用异常捕捉机制去判断我们输入的密码和账户是否是正确的进行提醒。如果不正确就要抛出错误。
    这又是要我们自定义去创建异常类。这和我们上次所学习的例子差不多,不过我们需要去创建不止一个异常类,并且写出符合题目的要求的自定义函数进行判断。
  • 代码
import java.util.Scanner;
public class tiaozhan3 {
    public static void main(String args[]){
        address d=new address();//创建一个处理异常类的对象
        Scanner s=new Scanner(System.in);//输入前进行扫描,等待a成绩在键盘上的输入     
        String s1;
        String s2;
        try{
            System.out.println("欢迎进入月月鸟测试平台,请输入账户和密码:");
            d.dual(s1=s.nextLine(),s2=s.nextLine());//构造函数,并在用户输入信息后判断是否异常
        }
        catch(worderror e){
            System.out.println(e);//输出异常信息“账户或密码输入错误”
            System.exit(0);//程序结束
        }
        catch(longerror w){//当try代码块有异常时转到catch代码块
            System.out.println(w);//输出异常信息“账户和密码不能为空”
            System.exit(0);//程序结束
            }
        catch(yonghuerror m){//当try代码块有异常时转到catch代码块
            System.out.println(m);//输出异常信息“密码长度不能小于六个字符”
            System.exit(0);//程序结束
        }
      }
    }
class address{
     public void dual(String s1,String s2)throws worderror,longerror,yonghuerror{
         if(s1.equals("")||s2.equals("")){//if语句判断账户和密码是否为空,注意这里使用==的话,该异常将不会抛出,认清==与equals的区别
                throw new worderror("账户和密码不能为空");//需要抛出的异常信息
            }
         if(s2.length()<6){//这里我们设置的是密码长度是否小于六个字符时
                throw new longerror("密码长度不能小于六个字符");//需要抛出的异常信息
            }
         if(!s1.equals("quyuquan2014")||!s2.equals("1173686352")){//判断账户密码是否输入正确
                throw new yonghuerror("账户或密码输入错误");//需要抛出的异常信息
            }
         else System.out.println("用户登录成功,关电脑吧,没你什么事情了");//如果输入正确则输出该信息
     }
}
class worderror extends Exception{//自定义异常类,继承自Exception类
    worderror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}
class longerror extends Exception{//自定义异常类,继承自Exception类
   longerror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}
class yonghuerror extends Exception{//自定义异常类,继承自Exception类
    yonghuerror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}
  • 结果
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 分析

import java.util.Scanner;
public class tiaozhan3 {
    public static void main(String args[]){
        address d=new address();//创建一个处理异常类的对象
        Scanner s=new Scanner(System.in);//输入前进行扫描,等待a成绩在键盘上的输入     
        String s1;
        String s2;

首先,这一段是最基础的简单的,添加Scanner包,创建主函数,创建一个处理异常类,给定两个字符串S1,S2

try{
            System.out.println("欢迎进入月月鸟测试平台,请输入账户和密码:");
            d.dual(s1=s.nextLine(),s2=s.nextLine());//构造函数,并在用户输入信息后判断是否异常
        }
        catch(worderror e){
            System.out.println(e);//输出异常信息“账户或密码输入错误”
            System.exit(0);//程序结束
        }
        catch(longerror w){//当try代码块有异常时转到catch代码块
            System.out.println(w);//输出异常信息“账户和密码不能为空”
            System.exit(0);//程序结束
            }
        catch(yonghuerror m){//当try代码块有异常时转到catch代码块
            System.out.println(m);//输出异常信息“密码长度不能小于六个字符”
            System.exit(0);//程序结束
        }
      }
    }

打印出前言,try部分将一会再键盘上输入的账号和密码放在address类中的 dual对象进行处理
三个catch部分分别是账号密码错误,长度有误以及为空时候的模块并且设置在这些情况下进行抛出异常。

class address{
     public void dual(String s1,String s2)throws worderror,longerror,yonghuerror{
         if(s1.equals("")||s2.equals("")){//if语句判断账户和密码是否为空
                throw new worderror("账户和密码不能为空");//需要抛出的异常信息
            }
         if(s2.length()<6){//这里我们设置的是密码长度是否小于六个字符时
                throw new longerror("密码长度不能小于六个字符");//需要抛出的异常信息
         }
         if(!s1.equals("quyuquan2014")||!s2.equals("1173686352")){//判断账户密码是否输入正确
                throw new yonghuerror("账户或密码输入错误");//需要抛出的异常信息
            }
         else System.out.println("用户登录成功,关电脑吧,没你什么事情了");//如果输入正确则输出该信息
     }
}

自行根据题目的要求去设定三个条件的代码

s1.equals(“”)||s2.equals(“”)

这句的意思是s1,s2为0时,worderror 模块

s2.length()<6

当s2字符串的长度少于6时,运行longerror模块

!s1.equals(“quyuquan2014”)||!s2.equals(“1173686352”

当输入的账户和密码不等于事先设置的话,执行yonghuerror模块

else System.out.println(“用户登录成功,关电脑吧,没你什么事情了”);//如果输入正确则输出该信息

不然就是密码输入正确,输出。

class worderror extends Exception{//自定义异常类,继承自Exception类
    worderror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}
class longerror extends Exception{//自定义异常类,继承自Exception类
   longerror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}
class yonghuerror extends Exception{//自定义异常类,继承自Exception类
    yonghuerror(String msg){//构造函数
        super(msg);//继承于父类用super
        }
}

写出三个不同catch模块中的继承。

  • 总结
    在这里的难度,体现在以往的我们都是进行一个异常处理类进行捕捉,但是这次是三个的话,对于我们新手学习是一次很好的挑战。在设置条件中,符号的不会灵活运用也是对于新手的挑战。
    关于== 与equals 的区别这里,我人认为我们还是需要再进行研究和理解。
    特别鸣谢这里我在这从中的启发。

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/82353434
今日推荐