异常的分类 异常分为:Error和ExceptionException类它是异常类,它所有编译时期的异常类的超类。如果在程序我们使用Exception异常类,那么在程序编译的时期,编译器就会检测当前的异常有没有提前给处理方案,如果当前的程序没有给出提前的处理方案,这个程序在编译时期无法通过。 编译时期异常 当我们是功能的定义者时,在定义功能的时候,如果我们的程序有问题(异常)发生,并且我们需要功能的调用者提前就知道他调用的我们的程序中的问题,并且要求调用者提前就想好如何去处理这个问题, 如果调用者他不给出任何处理方案,就不让程序编译通过,这时就可以使用编译时期。 当我们定义的功能中使用编译时期异常,这时如果这个异常又要暴漏给调用者,这时需要在我们定义的功能上使用throws关键字对功能中的异常进行声明, 声明的目的是把功能中的异常报告给调用者,要求调用者提前给处理方案。 编译时期异常,目的是让程序的调用者知道问题的存在,并在在使用这个已经有问题的功能之前就想好处理方案。 运行时期异常 RumtimeException: 当在定义功能的时候,如果程序中检测到了问题,但这个问题不需要调用者提前给处理方案,这时就可以不用抛出编译时期异常,那么在编译代码的时候,编译器就不会检测这个问题编译正常通过,当程序真正运行起来的时候,问题发生了,这个时候这个问题就会直接抛给了调用者。那么由于没有在方法上对这个问题进行声明,调用者在调用的时候也不知道,那么调用就不会提前给处理方案,就会导致调用者的程序停止运行。 异常处理: Java中的异常处理是通过捕获或者声明来处理。 声明: 当在程序中有异常发生,这时我们可以有2种处理方案,最简单的就是在方法上使用throws关键字把这个问题声明出去。 throws关键字主要用在方法上,用于声明方法中使用throw关键字抛出的异常(编译时期异常)。 捕获: 声明是在方法上把异常报告给调用者。捕获是在方法中把这个异常抓住。不让这个问题暴漏出去。 捕获异常的格式: try { //在try代码块中书写可能发生异常的问题代码 } catch( 发生的异常名字 变量名 ) { 对捕获到的异常进行处理的代码 }
声明和捕获的区别声明主要用在方法上,主要功能是把方法中的异常声明给调用者。方法中没有异常,也可以在方法上声明异常。声明的目的只有一个,就是把异常报告给调用者。 捕获:主要用在方法中,对方法中出现的问题在方法中直接捕获掉,把问题在方法中直接处理完成。
|