java中异常的处理和分析

时间:2021-12-31 11:52:08

昨天实训上午讲了异常,感觉有点印象模糊,特意回顾仔细看了下,所以今天写下对java中异常的处理和分析


一.异常的简介和分类

  异常:有异于常态,和正常情况不一样,有错误出现阻止当前方法或作用域,称之为异常Exception;

  Throwable:所有不正常类的父类,Error和Exception的父类;
  Error:系统的错误,代码中无法处理,需要重新检查;
  Exception:称为异常,代码中可以处理的;


二.Exception的两大类的介绍

  Exception总体分为两大类:运行时异常受检异常(编译异常)

  1.RuntimeException运行时异常

  运行时异常在程序编译时不会抛出异常,只有在程序运行时才会抛出该异常,该异常会中断程序的正常运行;如果在函数内容中抛出异常对象,函数上可以不用声明,编译一样通过;如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过;


  解释:为什么不用在函数声明,是因为不需要让调用者处理,当该异常发生时,希望程序停止,

      因为在运行时,出现了无法继续运算的情况,希望停止程序后对代码进行修正!


  2.受检异常(编译异常):

  受检异常在程序编译的时候会自动检测并抛出异常,如果没有对受检异常进行处理,编译时程序就会出错;

   如:文件的读写操作,数据的一些操作等都会产生编译异常


三.异常的处理

  java中异常的处理先要放在try语句块中进行捕获,如果发生异常jvm会自动throw抛出相应的异常对象,然后和try块后的catch块括号中的异常类进行匹配,要是匹配就执行该catch块中的语句,否依次匹配下面的catch块没有则中断程序,要是有finally语句块在jvm打印异常堆栈追踪信息打印finally块中的信息


      异常处理的语法:

 1. try{...}catch(Exception){...}
 2. try{...}finally{...}
 3 .try{...}catch(Exception e){...}finally{...}

    

     异常机制:

 栈就是方法的工作空间,一执行方法就压栈,异常机制就是采用异常栈机制


四.注意事项(总结整理的有点乱)

 1. finally中定义的通常是关闭资源代码,因为资源必须释放;


 2. 当执行到System.exit()时,finally不会执行;


 3. 当try中有return值,catch中也有return值,最后返回catch中的return值,
   但是finally中也有return值,最后返回finally中的return值;


 4. 编译异常又称为受检异常,try语句块不易过大,catch块以倒三角型进行排布;


 5.java处理异常的机制会不会影响效率,原则上不会,实际上要是处理异常和抛出

   异常间隔太远会影响效率,尽量在当前方法中进行异常处理;

 

 6.当函数内容有throw抛出异常对象,并未进行try-catch处理,则要在函数上声明,否则编译出错;


 7.throws使用在函数上;throw使用在函数内;throws后面跟的异常类,可以跟多个,用逗号隔开;

   throw后面跟的是异常对象