java 异常捕捉机制 (1.4)
编译语言 : Java
编译版本 :JDK 1.3 至 1.8
任务目标 : 学习JDK的异常捕捉机制
1 异常概述
异常是一个在程序执行期间发生的事件,其中断正在执行的程序的正常指令流。在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境因素,如用户的坏数据,试图打开一个根本不存在的文件,还有存在空指针,数组溢出,算数异常等之类的。在Java中这种在程序运行时间可能出现的一些错误就称之为异常。简单举个如下例子1-1,出现了分子为零的情况,此就为算数异常:
public static void main(String [] args) { //主方法
int result = 3/0; //定义int型变量并赋值
System.out.println(result); //将变量输出
}
报错如下:
2 捕捉异常
Java语句异常捕获结构由try、catch 和 finally 3部分组成。其中 try 存放可能发生异常的 Java语句,catch 用来激发被捕捉的异常;finally 无论try 语句内代码如何退出,都将执行 finally 语句块。
try{
//程序代码块
} catch(Exceptiontype1 e){
//Exceptiontype1的处理
}
catch(Exceptiontype2 e){
//Exceptiontype2的处理
}...
finally{
//程序块
}
3 自定义异常
此部分是我们博主主要分析的,百度云盘连接中四个共享例子均是自定义异常。
用户只需继承Exception即可自定义异常类,其大致可分为以下几个步骤:
(1)创建自定义异常MyException ,该类继承了Exception
public class MyException extends Exception{ //构建自定义异常,继承Exception类
public MyException(String ErrorMessage) { //构造方法
// TODO Auto-generated method stub
super(ErrorMessage); //继承父类的构造方法
}
}
(2) 在同一个项目中,创建类,并调用自定义异常处理:
static void index(String user,String pwd)throws MyException{
if(user.length()==0|| pwd.length()==0) //判断方法中参数是否满足指定条件
throw new MyException("用户名或密码不为空");
else if(pwd.length()<6) //判断方法中参数是否满足指定条件
throw new MyException("密码输入不能小于6位");
else if(!user.equals(userdf)||!pwd.equals(pwddf)) //判断方法中参数是否满足指定条件
throw new MyException("用户名或密码错误");
else
System.out.println("登陆成功"); //控制台输出
}
.........
try {
index(user,pwd); //调用函数
}catch(MyException e){
System.out.println(e.getMessage()); //输出错误信息
break;
}
以上程序实现了通过赋初值或接收用户通过键盘输入的方式为表示用户名和密码的两个String类对象赋值,然后进行判断,如果用户名或密码为null,抛出自定义异常并结束程序;如果输入密码长度小于6个字符,抛出自定义异常并结束程序;如果用户名和密码不等于事先指定的字符串,抛出自定义异常并结束程序;否则输出提示“用登录成功”。结果如下:
异常机制练习文档及源代码共享:
链接:https://pan.baidu.com/s/1mPFxF6wjzbcLEmGVoiqxzg 密码:e4cz
备注:
Demo 9 中检验输入字符串是否全是数字,可用正则表达式
a.matches("^[0-9]+$") //检验a中是否有除了数字以外的字符