异常,英文是Expection,意思是例外。
异常的作用主要是为了代替if来处理各种情况。
异常机制
本质是当程序遇到错误,让程序可以安全退出的机制。
1.抛出异常
当执行一个方法时,如果发生异常,就把这个方法生成代表该异常的一个对象,停止执行当前路径,将对象交给JRE。
2.捕获异常
JRE得到异常后,处理异常。
Throwable是所有的异常
Error代表没法处理的异常,不需要管。
Expection是需要处理的
(这些都是类)
异常有哪几种
Runtime Exception:运行时处理
NullPointException 空指针
ClassCastException 强制转换发生错误
ArithmeticException 试图除以0
ArrayIndexOutOfBoundsException 数组越界
Checked Exception:编译时就处理
处理异常的方式
捕获异常
try{
语句1:
语句2:
//可能有异常的地方
}
catch(Expection1 e){子类在前
}catch(Expection2 e){
}finally{
//有没有异常都执行它
}
抛出异常
不想处理,直接抛出
在方法后写throw Expection
调用该方法的方法也要处理异常
自定义异常
继承Exception类或RuintimeException类
这是自定义异常的例子:
public class write {
public static void main(String[] args) {
Person p = new Person();
p.setAge(-10);
}
}
class Person
{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if(age<0)
throw new newException("年龄应该大于0");
this.age = age;
}
}
class newException extends RuntimeException{
public newException()
{}
public newException(String msg)
{
super(msg);
}
}
结果如下:
Exception in thread “main” newException: 年龄应该大于0
at Person.setAge(write.java:17)
at write.main(write.java:4)