1,异常是什么?
-
用来封装错误信息
-
日志中的错误信息(异常类型,异常出现的代码行号,异常提示信息);
2,异常的继承结构
Throwable
--Error(系统级,如果出现,尽量让程序友好的退出)
--Exception(可以修复的错误)
3,异常处理的两种写法
1,通过try,catch
try{
}catch(Exception e){
}finally{
//一定执行的方法
}
2,在方法上,通过设置异常管道(手动不写的话,系统会默认有一个异常管道,RunTimeException)
void name() throws Exception{
}
3,关键字 throw
类似于return,放在方法中,手动抛出异常
if(逻辑出错){
AException e=new Exception();
throw e;
}
//举个例子:
public static void main(String[] args) {
System.out.println("请输入两个数字");
int x=new Scanner(System.in).nextInt();
int y=new Scanner(System.in).nextInt();
try {
int z=f(x,y);
System.out.println(z);
} catch (Exception e) {
// TODO: handle exception
System.out.println("程序异常了"+e.getMessage());
}
}
private static int f(int x, int y) {
if(y==0) {
ArithmeticException exception =new ArithmeticException("除数是0了");
throw exception;
}
return x/y;
}
4,RuntimeException
运行期异常(有默认管道,编译器不检查):
- NullPointerException - 空指针引用异常
- IllegalArgumentException - 传递非法参数异常
- IndexOutOfBoundsException - 下标越界异常
- NumberFormatException - 数字格式异常
- ClassCastException - 类型强制转换异常
- ArrayIndexOutOfBoundsException - 数组下标越界异常
5,异常包装
- 异常简化的时候;
- 不能抛出的异常;
- 自定义异常;