异常:
一.概念:在程序运行过程中,出现的非正常情况或由开发人员主动抛出能够结束当前流程的情况。
二.异常的关键字:
①try(类似把嫌疑人进行监控):
用法:把可能出现异常的代码块包在try中
范式:
try{
//可能出现异常的代码块
}
②catch(发现嫌疑人,捕捉并处理):出现异常后捕捉处理,并声明所捕捉到异常的类型。
try{
//可能出现异常的代码块
}catch(异常类型 名){
//出现异常后的处理
}
③finally:无论是否有异常都会执行
try{
//可能出现异常的代码块
}catch(异常类型 名){
//出现异常后的处理
}finally{
//执行语句块
}
④throws:声明异常,提前声明可能出现的异常,位置在方法头的最后,在方法体的前边。
范式:修饰符 返回类型 方法名()throws 可能出现的异常类型{ 方法体}。
(说明:在throws 后可以声明多个异常类型,中间用,分割,但一般不会很多,且前边声明后,后边必须要对声明的异常,进行捕捉)。
⑤throw:手动抛出,与throws一起使用。
三.java中常见异常:
① java.lang.NullPointerException空指针异常:程序遇上了空指针 ,简单地说就是调用了未经初始化的对象或者是不存在的对象。
②java.lang.ClassNotFoundException找不到类异常:指定的类不存在 。
③java.lang.ArithmeticException数学运算异常:除以零这样的运算就会出这样的异常。
④java.lang.ArrayIndexOutOfBoundsException数组下标越界:下标超出了数组的范围。
⑤java.lang.IllegalArgumentException方法的参数错误:输入的参数不匹配。
…
四.异常处理原则:
1.为了保证程序能够继续执行
2.对用户友好
五.异常分类:
说明:Checked Exception,又被称为“已检查异常(写代码时,编译器自己报错)。
六.自定义异常:
①所有的异常类的父类是:exception
②创建一个普通类–>继承 exception类–>按需要去定义构造器
③自定义异常类应该包含2个构造器:一个是默认的构造器,另一个是带有详细信息的构造器。
class IllegalAgeException extends Exception { //默认构造器
public IllegalAgeException() {
} //带有详细信息的构造器,信息存储在message中
public IllegalAgeException(String message) {
super(message);
}
}
===============
class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) throws IllegalAgeException {
if (age < 0) {
throw new IllegalAgeException("人的年龄不应该为负数");
}
this.age = age;
}
public String toString() {
return "name is " + name + " and age is " + age;
}
}
============
public class TestMyException {
public static void main(String[] args) {
Person p = new Person();
try {
p.setName("Lincoln");
p.setAge(-1);
} catch (IllegalAgeException e) {
e.printStackTrace();
System.exit(-1);
}
System.out.println(p);
}
}