当前位置: 主页 > JAVA语言

java空指针异常处理-状态码500空指针异常

发布时间:2023-02-09 07:18   浏览次数:次   作者:佚名

前言:

每个人都熟悉 Java 异常。 但是对于它如何归类,JVM如何处理,在代码中如何处理,应该如何使用,底层如何实现等等,可能就不是那么清楚了。 基于此,本文对异常的类型、实现方式以及使用时的注意事项进行了简要的探讨。

1.异常实现及分类

1.先看异常类的结构图

java空指针异常处理_状态码500空指针异常_空指针异常

上图可以简要展示异常类的实现结构图。 当然,上图也不全是例外。 用户还可以自定义异常实现。 上图足以帮助我们解释和理解异常实现:

1.所有异常都继承自Throwable,Throwable是所有异常的共同祖先。

2、Throwable有两个子类,Error和Exception。 其中Error是错误,所有的编译时错误和系统错误都是通过Error抛出的。 这些错误表明故障发生在虚拟机本身,或者虚拟机试图执行应用程序时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。 这些错误是无法追踪的,因为它们超出了应用程序的控制和处理能力,而且大多数是程序运行时不允许出现的情况。 对于设计良好的应用程序,即使确实发生了错误java空指针异常处理java空指针异常处理,它也不应该天生就尝试处理它引发的异常情况。 在 Java 中,错误由 Error 的子类描述。

3.Exception是另一个非常重要的异常子类。 它指定的异常是程序本身可以处理的异常。 异常和错误的区别在于异常可以被处理,而错误不能被处理。

状态码500空指针异常_java空指针异常处理_空指针异常

4.检查异常

Checkable异常在编码中非常常用,所有的checked异常都需要在代码中处理。 它们的发生是可以预见的、正常的、可以合理管理的。 比如IOException,或者一些自定义的异常。 除了RuntimeException及其子类外,都是checked exception。

5. 未经检查的异常

RuntimeException 及其子类是未经检查的异常。 例如NPE空指针异常、除数为0的算术异常、ArithmeticException等。这类异常发生在运行时,无法提前捕获和处理。 Error也是unchecked exception,无法进行预处理。

2.异常处理

代码中的异常处理实际上是处理已检查的异常。

1.通过try...catch语句块来处理:

例如

try

状态码500空指针异常_空指针异常_java空指针异常处理

{ // 程序代码 }catch(ExceptionName e1) { //Catch 块 }

Catch 语句包含要捕获的异常类型的声明。 当受保护的代码块中发生异常时,将检查 try 之后的 catch 块。

如果发生的异常包含在一个 catch 块中,则异常将被传递到 catch 块,这与将参数传递给方法相同。

java空指针异常处理_空指针异常_状态码500空指针异常

2.另外,也可以不在特定位置处理,直接throw,然后通过throws/throw向上层处理。 具体来说,如果一个方法没有捕获到已检查的异常,则必须使用 throws 关键字声明该方法。 throws 关键字放在方法签名的末尾。 您还可以使用 throw 关键字来抛出异常,无论它是新实例化的还是刚刚捕获的。

以下方法的声明抛出 RemoteException:

import java.io.*;
public class className
{
  public void deposit(double amount) throws RemoteException
  {
    // Method implementation
    throw new RemoteException();

java空指针异常处理_空指针异常_状态码500空指针异常

} //Remainder of class definition }

3.finally关键字

finally 关键字用于创建在 try 块之后执行的代码块。

无论是否发生异常,finally 块中的代码将始终执行。

在 finally 代码块中,您可以运行具有整理性质的语句,例如清理类型。

finally代码块出现在catch代码块的末尾,语法如下:

try{

空指针异常_状态码500空指针异常_java空指针异常处理

// 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }

概括:

本文简单梳理了异常的结构关系、分类、处理体系,可以帮助我从理论上将它们联系起来,也希望对有需要的朋友有所帮助。