java基础_1

java异常
java的异常处理机制主要回答了三个问题:

  1. What: 即异常类型,回答了什么异常类型会被抛出.
  2. Where: 即异常堆栈跟踪,回答了在哪儿抛出的异常.
  3. Why: 即异常信息,回答了为什么会抛出该异常.

java的异常体系
在这里插入图片描述
由图可知:
Throwable是java异常体系的顶层父类,它有两个子类,分别是Error类Exception类.
而Exception类又包括了RuntimeException这个运行时异常和其他的编译期异常.

RuntimeException: 表示运行时异常,是不可预知的,不过写程序可以自行避免,例如数组下标越界等.
非RuntimeException: 可预知的,从编译器校验的异常,这也是必须处理的异常,不处理程序不执行,如IOException等.
在这里插入图片描述
其中,可检查异常就是非运行时异常,也就是编译期异常,不能直接抛出,必须处理才能编译通过,如下图中的文件无法找到异常
在这里插入图片描述

Error和Exception的区别

  • Error: 指的是程序无法处理的系统错误,编译器不做检查,一般是跟jvm相关的问题.
  • Exception: 程序可以处理的异常,捕获后可能可以恢复程序执行.
  • 总结: 前者是程序无法处理的错误,后者是可以处理的异常.

常见Error以及Exception

RuntimeException:

  1. NullPointerException-空指针异常
  2. ClassCastException-类型强制转换异常,比如将类A的实例对象转换为无关的类B的对象.
  3. IllegalArgumentException-传递非法参数异常,比如传递了不满足要求的参数
  4. IndexOutOfBoundsException-下标越界异常
  5. NumberFormatException-数字格式异常,比如将字符串a转换为int类型的数字

非RuntimeException:

  1. ClassNotFoundException-找不到指定class异常.
  2. IOException-IO操作异常.

Error:

  1. NoClassDefFoundError-找不到class定义异常
    可能是由于类依赖的class或者jar不存在.
    或者是类文件存在,但是存在不同的域中.
    也有可能是大小写问题,javac编译的时候是无视大小写的,很有可能编译出来的文件与想要的不一样.
  2. StackOverFlowError-栈溢出,通常是由于深递归导致的.
  3. OutOfMemoryError–内存溢出

java的异常处理机制

  • 首先抛出异常: 当一个方法出现错误或者异常时,系统会先创建异常对象,交由运行时系统处理.
  • 然后捕获异常: 寻找一个合适的异常处理器处理异常,否则终止运行.

java异常的处理原则
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值