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());
}
}
}
以上就是自定义异常类的简单使用,有什么问题欢迎一起讨论~