1.java异常

在这里插入图片描述

异常类型
  • Throwable类:继承Object类,是很错误(Error)和异常(Exception)的根类
  • Exception 类:用于用户程序可能出现的异常情况,它也是用来创建自定义异常类型类的类。
  • Error类 :定义了在通常环境下不希望被程序捕获的异常。一般指的表示严重的错误,程序对此一般无能为力。
  • 运行时异常:是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是非强制性异常,程序中可以选择性捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。
  • 非运行时异常:也叫Checked Exception,是指 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常(一般情况下不自定义检查异常)。
常见错误:都是Error的子类
  • OutOfMemoryError:内存耗尽
  • NoClassDefoundError:无法加载某个Class
  • StackOverflowError:栈溢出
所有异常是Exception类的子类
常见运行时异常(都是RuntimeException的子类)
异常类型说明
ArithmeticException算术错误异常,如以零做除数
ArraylndexOutOfBoundException数组索引越界
ArrayStoreException类型不兼容的数组元素赋值
ClassCastException类型转换异常
IllegalArgumentException使用非法实参调用方法
lIIegalStateException环境或应用程序处于不正确的状态
lIIegalThreadStateException被请求的操作与当前线程状态不兼容
IndexOutOfBoundsException某种类型的索引越界
NullPointerException尝试访问 null 对象成员,空指针异常
NegativeArraySizeException负数范围内创建的数组
FormatException格式异常,比如字符串到 float 型数字的转换无效
TypeNotPresentException类型未找到
非运行时异常(除RuntimeException及子类以外的其它类Excepiton类及子类)
ClassNotFoundException没有找到类
IllegalAccessException访问类被拒绝
InstantiationException试图创建抽象类或接口的对象
InterruptedException线程被另一个线程中断
NoSuchFieldException请求的域不存在
NoSuchMethodException请求的方法不存在
ReflectiveOperationException与反射有关的异常的超类
异常的传播

当某个方法抛出了异常时,如果当前方法没有捕获异常,异常就会被抛到上层调用者,如是不处理,会继续抛到下一个更高层的调用者,依次类推。。。,直到遇到某个try ... catch被捕获为止。

所有未捕获的异常,最终也必须在main()方法中捕获,通过printStackTrace()可以打印出方法的调用栈

五个关键字

try: 尝试

catch:捕获

finally:最终的


throw :抛, 方法内部抛出一个异常对象,如果程序遇到指定的条件下会生成一个异常对象并抛出。


throws:抛,定义方法头部时,定义一个抛出的异常类型

告诉调用者,调用此方法时要处理异常

总结:最高的调用者进行捕获。

如果程序对异常进行捕获后,就算是发生异常,也不终止程序的继续运行。

如果对程序中的运行时异常不处理,发生异常,中断程序的运行。

有些非运行时异常必须处理。

Exception中有两个重要实例方法:

​ e.getMessage(): 获取异常消息,显示给普通用户。

​ e.printStackTrace():打印异常消息及发生的位置,适用于程序员做调试。

如何处理异常
1.如何捕获异常?

如果代码中有异常,可以捕获后再处理

try{
	//有可能产生异常的代码 
    1....
        
}catch(XxxxException  变量){
	//异常处理代码
    2...  
}finally{
    //始终要执行的代码 
    3...
}

总结:

1.catch必须跟在try之后,try之后可以没有catch块

2.try后可以跟catch或finally

3.非运行时异常必须处理

4.异常对象必须匹配catch中的异常类型

5.异常类型可以大于等 异常对象的类型

6.catch代码块可以多个,如果catch后的类型有继承关系,先子类后父类

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值