异常

Java中有一个已经定义好的规则Throwable类,实现了一个序列化接口
Exception异常。通常是一种人为规定的不正常的现象。通常是给定的程序指令产生了一些不符合规范的事情

Throwable下面有Error和Exception两个分支
Exception中有一种RuntimeException(运行时异常,也叫非检查异常)
Error和RuntimeException都算作运行时异常,javac编译的时候,不会提示和发现,程序编写时不要求必须做处理,也可以添加处理手段

运行时异常

  1. InputMisMatchException 输入不匹配
  2. NumberFormatException 数字格式化异常
  3. NegativeArraySizeException 数组长度负数
  4. ArrayIndexOutOfBoundsException 数组索引越界
  5. NullPointerException 空指针异常
  6. ArithmeticException 数字异常(10/0),如果小数除以0,则不会异常,结果是Infinity
  7. ClassCastException 造型异常(类型转换异常)
  8. StringIndexOutOfBoundsException 字符串越界
  9. IndexOutOfBoundsException 集合越界
  10. ILLegalArgumentException 非法参数异常

编译时异常

除了Error和RuntimeException之外其他的异常
javac编译的时候,强制要求我门必须为这样的异常做处理(try或throws)
因为这样的异常在程序运行过程中极有可能产生问题,异常产生后,后续的所有执行就都停止了
catch
catch对异常进行捕获
如果多个catch,那捕获的异常没有任何继承,捕获的异常需要从小到大进行捕获
finally
无论如何finally一定会被执行(finally可有可无,要么没有,有只能有一个)

异常处理

添加异常处理的手段。处理异常不是异常消失了,是处理掉异常之后,后续的代码不会因这个异常和终止执行

两种手段
1.
try{}catch{}finally{} finally可有可无,可以有多个catch
try不能单独出现,一个try后面必须添加catch或finally

异常处理在方法中,如果try中添加了return,finally也会执行。虽然return了
可以理解为事先约定好返回值,不是在那里就退出了方法。try catch finally是一起的,不能分开,不能执行一半就没了。
所以finally会执行。返回值看情况(try里面会不会出现异常)
总之:如果在方法内部含有返回值,不管返回值return关键字在哪里,finally一定会执行,返回值是什么,看执行了哪个return;
catch(Exception e) // 捕获异常对象。e
e.printStackTrace(); 表示输出异常信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.
throws抛出异常
异常只能在方法内抛出,属性是不能处理异常的
块不能抛出异常
方法可以抛出多个异常,通过逗号隔开
抛出的异常与多个catch类型,要么没继承关系,要么从小到大
在这里插入图片描述

自定义异常

  1. 先自己描述一个异常的类
  2. 让这个类继承:
       如果继承的是RuntimeException就是运行时异常(可以不添加处理手段)
       如果继承的是Exception就是编译时异常,必须添加处理手段
    3.创建一个当前自定义异常类的对象,通过throw关键字主动产生异常
    4.当我们设计描述的方法(事情)之前没有相关的异常能描述我的问题的时候,就自定义异常。比如输入的数必须在哪个范围内,超出范围就异常。

在这里插入图片描述
super(message);调用父类的构造方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值