Ehrowable:Exception(异常,通过异常处理机制进行异常处理)、Error(错误,无法处理只能修改代码)
异常的分类:运行时异常(非检测异常),非运行时异常(检测异常)
常见的异常
NullPointerException:空指针异常,由于对象为空但是仍然调用方法
ArithmeticException : / by zero :数学异常,除数不能为零
IndexOutOfBoundsException:索引越界异常
ArrayIndexOutOfBoundsException:数组下标越界异常
StringIndexOutOfBoundsException:字符串下标越界异常
NumberFormatException:数字格式异常
ClassCastException:数据类转换异常
异常处理
try {//放入可能发现异常的代码
//return; 遇见return会在返回之前执行finally
//System.out.println(100/0); 不论是否异常finally都会执行
// 强制关闭程序 不会执行finally
System.exit(0);
// catch捕获异常进行异常处理,捕获成功便处理异常继续执行,捕获失败便异常未处理程序中断
} catch (ArithmeticException e) {
// TODO: handle exception
System.out.println("异常处理了,代码继续执行");
}finally{
System.out.println("只有手动或强制关闭程序的时候,才不执行");
}
异常的定义
public class LoginException extends Exception{
public LoginException(String message){
super(message);
}
}
抛出异常
//抛出异常的两种方法
LoginException le=new LoginException("对不起登录失败");
throw new LoginException("对不起登录失败")
//LoginException是定义的异常
throw
运行时异常是JVM自动抛出,非运行时异常需要程序员用throw关键字抛出
throws
-
throws用在方法声明处,声明该方法可能发生的异常类型
-
一个方法如果使用了throws,那么调用该方法时,编译期会提醒必须处理这些异常,否则编译错误
-
throws后可以声明多种类型,用逗号隔开即可;
-
抽象方法也可以使用throws声明该方法可能抛出的异常类型;