大数据第十四天

1、Java中异常关系图

2、编译异常,运行时异常概念

运行时异常

是指编译程序不要求强制处置的异常。一般是指程序设计时的逻辑错误,是程序员应该积极避免其出现的异常。

java.lang.RuntimeException类及它的子类都是运行时异常。

对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能对程序的可读性和运行效率产生影响。

编译异常

是指编译程序要求必须处置的异常。

Java程序必须捕获或声明所有编译时异常。

对于这类异常,如果程序不处理,可能带来意想不到的结果,编译都不能通过。

3、常用的异常对象包含的方法:

getMessage():返回该异常的详细描述对象

printStackTrace():将异常的跟踪栈信息打印出来

printStackTrace(PrintStresm s ):将异常的跟踪栈信息输出到指定的输出流

getStackTrace():返回该异常的跟踪栈信息

4、finally块中语句执行的特点,什么情况下会使try,catch中的return失效?

在finally块中使用return或者throw等导致方法终止的语句时

5、throws关键字用法

  使用throws抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上一级的调用者处理;如果main方法

也不知道如何处理这种类型异常,也可以使用throws继续声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方法是,打印异常的跟踪栈信息,并终止程序运行,这就是前面程序在遇到异常后自动结束的原因。

  throws声明抛出异常只能在方法签名中使用,throws可以声明抛出多个异常类,多个异常类之间用逗号隔开,其语法格式是:

方法签名+throws Exception1,Exception2...

一旦一个方法使用了throws关键字抛出异常,程序就无须使用try,catch块来捕获该异常了。

6、throw关键字用法

自行抛出异常

在程序中抛出异常的话,需要使用throw语句。

首先要生成异常类对象,其语法格式如下:

IOException e = new IOException();

throw e;

可以抛出的异常必须是Throwable或其子类的实例。具体的异常可以查看API文档。

  • 如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显式捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给方法的调用者处理;

如果throw语句抛出的是Runtime异常,则该语句无须放在try块中,也无须放在带throws声明的方法:这种运行时异常可以捕获,也可以完全不理会。

7、编译异常和运行异常,各有什么处理方式?

编译异常:必须处理之后才能正常编译

运行时异常,一是遇到错误就终止程序的运行,即不对异常进行处理;

  二是由程序员在编写程序时,就考虑到错误的检测、错误消息的提示,在抛给Java

运行时环境的时候,就将这个异常对象捕获,再进行处理(打印提示信息等)

8、如何自定义异常类?

定义异类时通常提供两个构造方法,一个是无参的,一个是带有一个字符串的构造方法,这个

字符串将作为该异常对象的描述信息,也就是异常对象的getMessage方法的返回着。

自定义一个异常的语法类如下:

public class MyException extends Exception{

  //无参构造方法

  public MyException(){}

  //带一个字符串的构造方法,用来传递异常信息

  public MyException(String msg ){

  super(msg);

  }

}

带参的构造方法将字符串传递给父类的message变量,即该异常的描述信息。

自行定义一个RuntimeException。

只需要将上述代码中的Exception改为RuntimeException即可。

原文地址:https://www.cnblogs.com/zhaoyongcx/p/6641948.html