JAVA异常类异常抛出处理

目录

  • 程序异常的含义
  • 什么是异常
  • 异常处理
    • 使用try...catch(和finally)语句对异常进行捕获处理
    • 使用throws关键字声明抛出异常
    • 使用throw关键字声明抛出异常
    • 自定义异常类
  • 总结

程序异常的含义

程序中的异常:在程序运行的过程中,也会发生这种非正常状况,例如程序运行时磁盘空间不足、网络连接中断、被加载的类不存在等。
程序异常解决方法:针对程序中的非正常情况,Java语言中引入了异常,以异常类的形式对这些非正常情况进行封装,并通过异常处理机制对程序运行时发生的各种问题进行处理。

什么是异常

我们常说的程序异常通常又两种,一是错误(error),二是异常类(Exception)。
JAVA异常类异常抛出处理_第1张图片
error称为错误,表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的,例如系统崩溃,虚拟机错误等。

Exception称为异常类,它表示程序本身可以处理的错误。在Java程序开发中进行的异常处理,都是针对Exception类及其子类的。
牢记:异常也是一种对象

异常处理

使用try…catch(和finally)语句对异常进行捕获处理

当程序发生异常时,会立即终止,无法继续向下执行。为了保证程序能够有效的执行,Java中提供了一种对异常进行处理的方式——异常捕获。
异常捕获try…catch语句的基本语法格式:

    try {
         // 可能发生异常的语句
    } catch(Exception类或其子类 e){
         // 对捕获的异常进行相应处理
    }

在try{}代码块中,发生异常语句后面的代码是不会被执行的。在程序中,如果希望有些语句无论程序是否发生异常都要执行,这时就可以在try…catch语句后,加一个finally{}代码块。
异常捕获try…catch…finally语句的基本语法格式:

    try {
         // 可能发生异常的语句
    } catch(Exception类或其子类 e){
         // 对捕获的异常进行相应处理
    } finally {
         // 无论是否发生异常,此代码块代码总会执行
}

使用throws关键字声明抛出异常

一般在程序开发中,开发者通常会意识到程序可能出现的问题,可以直接通过try…catch对异常进行捕获处理。但有些时候,方法中代码是否会出现异常,开发者并不明确或者并不急于处理,为此,Java允许将这种异常从当前方法中抛出,然后让后续的调用者在使用时再进行异常处理。
throws关键字抛出异常的基本语法格式:

[修饰符] 返回值类型 方法名([参数类型 参数名1...]) throws 异常类1,异常类2,... {
	// 方法体...
}

使用throw关键字声明抛出异常

程序开发中,除了可以通过throws关键字抛出异常外,还可以使用throw关键字抛出异常。
JAVA异常类异常抛出处理_第2张图片
说明:通过throw关键字抛出异常后,还需要使用throws关键字或try…catch对异常进行处理。
注意:如果throw抛出的是Error、RuntimeException或它们的子类异常对象,则无需使用throws关键字或try…catch对异常进行处理。
throw关键字抛出异常的基本语法格式:

    [修饰符] 返回值类型 方法名([参数类型 参数名,...]) throws 抛出的异常类 {
            // 方法体...
            throw new Exception类或其子类构造方法;
}

自定义异常类

Java中定义了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况,例如在设计divide()方法时不允许被除数为负数
解决方法:Java允许用户自定义异常,但自定义的异常类必须继承自Exception或其子类。
有关异常对象的两件最重要的事情是:
对象的类型,即异常类的名字。
对象在String类型实例变量中携带的消息。这个字符串可以通过调用访问器方法getMessage来找回。该字符串允许我们的代码将一条消息随异常对象一起发送,使得catch块可以找回该消息。
自定义异常的创建示例:

    public class DivideByMinusException extends Exception{
          public DivideByMinusException (){
	super();          // 调用Exception无参的构造方法
          }
          public DivideByMinusException (String message){
	super(message); // 调用Exception有参的构造方法
          }
    }

总结

1.异常处理使得我们可以在为程序的正常情况设计并编码时,将其与处理异常情况的代码分离开。

2.某些Java语句自身可能会抛出异常。类库中的方法也可能会抛出异常。我们还可以显式地在代码中用throw语句抛出异常。

3.当一个方法可能会抛出异常但是又没有捕获它时,通常必须在该方法的throws子句中列出该异常类。

4.每个异常都有一个getMessage方法,它可以用来找回被捕获异常的描述信息。

你可能感兴趣的:(java,java,开发语言,java-ee)