java基础--04(异常)

版权声明:Mr.Wang 汪先生 https://blog.csdn.net/weixin_37650458/article/details/85692902

1.异常

     异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。

    Throwable:可抛出的。 

        |——Error:错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正。

        |——Exception:异常,可以有针对性的处理方式

                       

    无论是错误还是异常,它们都有具体的子类体现每一个问题,它们的子类都有一个共性,就是都以父类名才作为子类的后缀名。

   这个体系中的所有类和对象都具备一个独有的特点就是可抛性

   可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。

   异常处理原则功能抛出几个异常,功能调用如果进行try处理,需要与之对应的catch处理代码块,这样的处理有针对性,抛几个就处理几个。

  特殊情况:try对应多个catch时,如果有父类的catch语句块,一定要放在下面。

2.throw 和throws关键字的区别:

  throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。

  

  throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。

   
 

 3.异常类型:

  异常分两种:

1:编译时被检查的异常,只要是Exception及其子类都是编译时被检测的异常。

2:运行时异常,其中Exception有一个特殊的子类RuntimeException,以及RuntimeException的子类是运行异常,也就说这个异常是编译时不被检查的异常。

 编译时被检查的异常和运行时异常的区别

 编译被检查的异常在函数内被抛出,函数必须要声明,否编译失败。

 声明的原因:是需要调用者对该异常进行处理。

 运行时异常如果在函数内被抛出,在函数上不需要声明。

 不声明的原因:不需要调用者处理,运行时异常发生,已经无法再让程序继续运行,所以,不让调用处理的,直接让程序停止,由调用者对代码进行修正。

定义异常处理时,什么时候定义try,什么时候定义throws呢?

  功能内部如果出现异常,如果内部可以处理,就用try;

  如果功能内部处理不了,就必须声明出来,让调用者处理。

4.自定义异常类:

   1:定义一个子类继承Exception或RuntimeException,让该类具备可抛性。

   2:通过throw 或者throws进行操作。

      

try  catch  finally的几种结合方式:

1,

try 

catch

finally

2,

try

catch

3,

try

finally

  这种情况,如果出现异常,并不处理,但是资源一定关闭,所以try  finally集合只为关闭资源。

记住:finally很有用,主要用户关闭资源。无论是否发生异常,资源都必须进行关闭。

System.exit(0); //退出jvm,只有这种情况finally不执行。

5.异常面试

非检查异常(unckecked exception):Error和RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。如SQLException , IOException,ClassNotFoundException 等。

1. error和exception有什么区别

答:Error类和Exception类的父类都是throwable类Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

 

自定义异常类:继承自Exception

Error用来表示编译时和系统错误(除特殊情况以外一般不用你担心)

Exception是可以被抛出的基本类型,

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/85692902