JAVA入门之异常笔记(34)

packageTEXT;publicclassDemo{publicstaticvoidmain(Stringargs){intarr={1,2,3};System.out.println(arr[3]);}}
当我们执行以上java程序的时候 , 会发现出错了
JAVA入门之异常笔记(34)
文章图片
那么官方术语异常是什么呢?异常是指在程序运行中代码产生的一种错误 。
Throwable类是类库java.lang包中的一个类 , 它派生出两个子类 , Error类和Exception类
Error类代表了JAVA内部的错误或者某些硬件的错误 , 比如内存溢出错误 , 栈溢出错误 , 系统内部错误等等 , 不能通过修改代码来实现解决该错误 , 因此 , Error类的错误被认为不能恢复的严重错误所以 , 我们在写代码的时候 , 要尽量避免Error类的错误
而Exception类是用户程序能够捕捉到的异常情况 , 一般情况下 , Exception类通过产生它的子类来创建自己异常 , 而这个异常可以通过修改代码以达到修复该异常的作用
1.try…catch…finally
try{可能产生异常的代码}catch(Exceptione1){对e1异常的处理}catch(Exceptionen){对en异常的处理}finally{一定会运行的语句序列}
JAVA入门之异常笔记(34)
文章图片
packageTEXT;publicclassDemo{publicstaticvoidmain(Stringargs){System.out.println("开始");intarr={1,2,3};try{System.out.println(arr[3]);}catch(Exceptione){//System.out.println("数组索引出界");e.printStackTrace;}System.out.println("结束");}}
JAVA入门之异常笔记(34)
文章图片
用了这个处理异常之后 , 当程序遇上异常后 , 不再像以前那种直接退出程序而是可以继续往下执行 , 这在我们以后开发软件非常实用 , 我们开发出来的软件 , 如果遇到异常后直接退出程序 , 那么将会给用户不好的体验 , 因此我们希望的是程序遇到异常可以往下执行 , 并且把异常报出来 。
2.throws
try…catch…可以对异常进行处理 , 但是不是所有的情况我们都有权限进行异常的处理也就是说 , 有些时候可能会出现我们处理不了的 , 这时候该怎么办呢?针对这种情况下 , JAVA提供了throws的处理方法
格式:throw异常类名
注意:这个格式时跟在方法的括号后面的
packageTEXT;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassDemo_1{publicstaticvoidmain(Stringargs){System.out.println("开始");method;System.out.println("结束");}//运行时异常publicstaticvoidmethodthrowsArrayIndexOutOfBoundsException{intarr={1,2,3};System.out.println(arr[3]);}}
JAVA入门之异常笔记(34)
文章图片
通过这个这个的运行结果可以看出来 , 并没有执行输出”结束“ , 因此throws处理异常并不是真正处理异常而是只是把这个异常抛出了 , 如果想要继续往下执行 , 那么需要对method继续使用try…catch , 所以这仅仅时延迟了异常
3.总结
JAVA入门之异常笔记(34)
文章图片
1、getMessage——用于输出异常的原因
packageTEXT;publicclassDemo{publicstaticvoidmain(Stringargs){System.out.println("开始");intarr={1,2,3};try{System.out.println(arr[3]);}catch(Exceptione){//System.out.println("数组索引出界");//e.printStackTrace;System.out.println(e.getMessage);//异常的原因}System.out.println("结束");}}
JAVA入门之异常笔记(34)
文章图片
2、toString——用于输出异常的类名以及异常原因
packageTEXT;publicclassDemo{publicstaticvoidmain(Stringargs){System.out.println("开始");intarr={1,2,3};try{System.out.println(arr[3]);}catch(Exceptione){//System.out.println("数组索引出界");//e.printStackTrace;//System.out.println(e.getMessage);//异常的原因System.out.println(e.toString);//异常类名以及异常原因}System.out.println("结束");}}