1 Star 1 Fork 2

SongyangJi / JavaBooks

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
异常的一些问题.md 2.20 KB
一键复制 编辑 原始数据 按行查看 历史
DreamCats 提交于 2020-05-18 23:41 . 异常的一些问题

异常的一些问题

在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。

  • Exception(异常)
  • Error(错误)

思维导图

Throwable

Error

是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。比如:OutOfMemoryError

Exception

是程序本身可以处理的异常。 比如:

  • RuntimeException 异常由Java虚拟机抛出。
  • NullPointerException(要访问的变量没有引用任何对象时,抛出该异常)
  • ArithmeticException(算术运算异常,一个整数除以0时,抛出该异常)
  • ArrayIndexOutOfBoundsException (下标越界异常)。

处理

  • try 块: 用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
  • catch 块: 用于处理try捕获到的异常。
  • finally 块: 无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。

注意:当try语句和finally语句中都有return语句时,在方法返回之前,finally语句的内容将被执行,并且finally语句的返回值将会覆盖原始的返回值。如下:

  public static int f(int value) {
      try {
          return value * value;
      } finally {
          if (value == 2) {
              return 0;
          }
      }
  }

throw和throws

抛出异常

throw的例子:

public class Test1 {
    public static void main(String[] args) {
        if(true) {
            throw new NumberFormatException(); // 抛出一个异常
        } else {
            ...
        }
    }
}

throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常),throws例子:

public class Test2 {
    public void fun() throws NumberFormatException {
        if(true) {
            throw new NumberFormatException();
        }
    }
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/songyangji/JavaBooks.git
git@gitee.com:songyangji/JavaBooks.git
songyangji
JavaBooks
JavaBooks
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891