Java基础知识day20——异常以及异常相关面试题
* 例如:10/0
* Exception in thread "main" java.lang.ArithmeticException: / by zero
* at 异常Demo.异常案例.main(异常案例.java:9)
*错误的类型:java.lang.ArithmeticException
*错误的原因:/ by zero
*异常的位置:at 异常Demo.异常案例.main(异常案例.java:9)
*
*我们在写代码的时候,经常会出现一些小问题,那么为了方便我们处理这些问题,java为我们提供了异常处理机制
*
*异常包含了错误的类型、原因以及所在位置。
*异常:不正常,我们在编写代码的时候出现的编译或者运行时的错误。
*异常的体系结构:
* Throwable【Throwable 类是 Java 语言中所有错误或异常的超类】最顶层
* |--Error:出现的不能够处理的严重问题
* |--Execption:可以处理的问题
*异常的处理方式:
* 捕获处理:
* try...catch语句
* try{
* 有可能出现问题的代码;
* }catch(ArithmeticException ae){
* 处理异常;
* }
* try...catch的执行顺序:
* 首先执行try语句
* 如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
* 如果没有发现异常,try语句执行结束后,try...catch直接结束,不在执行catch语句
* 抛出去
* 当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用谁处理异常,
* 使用关键字throws在方法的声明上抛出异常
*jvm处理的方式:
* 如果出现异常我们没有处理,jvm会帮我们进行处理,它会把异常的类型,原因还有位置显示在命令行,
* 并且还终止了程序,异常后面的代码将不再执行。
*
* 如何处理多个异常
* 可以使用多个try...catch语句
* 使用一个try多个catch
*
* 多个catch之间的顺序:
* 多个catch之间可以有子父类
* 平级之间没有顺序关系
* 如果有子父类,父类异常必须放在后面
*
* throwable的常用方法
* public String getMessage():异常的原因 / by zero
* public String toString():异常的类型和原因 java.lang.ArithmeticException: / by zero
* public void printStackTrace():异常的类型、原因以及位置
* java.lang.ArithmeticException: / by zero
* at 异常Demo.MyException3.main(MyException3.java:12)
*
* finally:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
* try{
* 有可能出现问题的代码;
* }catch(异常对象){
* 异常处理;
* }finally{
* 释放资源;
* 清理垃圾;
* }
*
*
* 自定义异常
* throws:处理异常的一种方式,把异常抛出,有调用者来处理。
* throw:制造异常的方式,并且结束方法
*
* 注意:如果抛出(throw)的编译时期异常,必须在方法声明处抛出(throws)
*
* 如何自定义一个异常类呢?
* 非常简单,写一个类去继承Exception或者RunTimeException,然后实现多个构造即可。