Java基础知识day20——异常以及异常相关面试题

Java基础知识day20——异常以及异常相关面试题

Java基础知识day20——异常以及异常相关面试题

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,然后实现多个构造即可。