Java Throwable VS Exception 类
本文将介绍何时使用 Java 中的 Throwable 和 Exception 类。 这两个类都有其构造函数和方法来处理错误和异常。
首先,我们将了解这两个类的 Throwable 和 Exception 的介绍,然后,我们将了解两者之间的区别。
Java中Throwable类简介
在 java.lang 类的层次结构中,Throwable 类是 Error 和 Exception 类的父类或超类。 这意味着Error和Exception是由Java中的Throwable类继承的。
结论是 Throwable 类可以捕获 Java 虚拟机产生的所有错误和异常,无论是堆栈跟踪错误还是编译或运行时异常。
此外,Throwable 类在定义它的 java.lang 库中实现了 Serialized 接口。
用户可以在下面查看 Throwable 类的定义。
public class Throwable extends Object implements Serializable
在上面的类定义中,用户可以看到Throwable类继承了Object类,并实现了Serialized接口。
Throwable 的语法:
try {
// some code
} catch(Throwable e) {
// handle errors or exceptions
}
Throwable 类包含重载的构造函数,如下所述。
构造函数
Throwable() | 此构造函数创建 Throwable 的新实例,并带有默认错误消息。 |
Throwable(String errorMessage) | 此构造函数创建带有 errorMessage 消息的 Throwable 的新实例。 |
Throwable(String errorMessage, Throwable errorCause) | 此构造函数还获取错误消息的原因,并使用 errorMessage 和 errorCause 创建 Throwable 的新实例。 |
Throwable(Throwable errorCause) | 此构造函数创建 Throwable 的新实例,并将特定原因作为参数传递。 |
方法
这里我们解释了Throwable类的一些方法。
toString() | 以字符串格式返回错误的描述。 |
getMessage() | 以字符串格式返回错误消息。 |
getCause() | 它返回 Throwable 当前实例的原因。 |
getLocalizedMessage() | 返回 Throwable 的本地化描述。 |
getStackTrace() | 它提供有关堆栈跟踪的信息。 |
printStackTrace() | 它打印 Throwable 的当前实例。 |
setStackTrace(StackTraceElement[] stackTrace) |
它允许设置 getStackTrace() 方法返回的堆栈跟踪元素。 |
initCause(Throwable Cause) | 它允许用户初始化当前 Throwable 的原因。 |
错误
Errors 类包含停止程序执行的错误。
StackOverflowError | 当堆栈或堆溢出时发生。 |
AssertionError | 由于断言失败而发生。 |
VirtualMachineError | 它缓存了Java虚拟机中的所有错误。 |
LinkageError | 由于链接问题而发生。 |
OutOfMemoryError | 由于设备内存不足或 JVM 内存不足而发生。 |
Java异常类简介
在 Java 中,异常是在运行时或编译时发生的不需要的事件。 可以在编译时捕获的异常,称为检查异常;只能在运行时捕获的异常,称为非检查异常。
Throwable 的语法:
try {
// some code
} catch(Exception e) {
// handle Exceptions only
}
在这里,我们定义了Java中的一些异常类型。
RuntimeException | 所有未检查异常的类都继承它。 |
NullPointerException | 由于空值或未定义值而发生。 |
ArithmeticException | 由于算术运算失败而发生。 |
ArrayIndexOutOfBoundsException | 当我们尝试访问大于其长度的数组索引时,就会发生这种情况。 |
NoSuchMethodException | 当方法未定义时发生。 |
IOException | 由于输入/输出操作失败而发生。 |
ClassNotFoundException | 当类未定义时发生。 |
SQLException | 数据库操作失败是导致该异常的原因。 |
程序员还可以通过继承Java的Exception类来定义异常。
我们应该使用哪个类,Throwable 还是 Exception
当我们查看 Throwable 和 Exception 类的语法时,乍一看它看起来很相似,因为我们都将它们与 try-catch 块一起使用。
Throwable类的实例可以捕获错误和异常,因为它们是Throwable的子类,但Exceptions的实例只能捕获程序中发生的异常。
在正常的Java应用程序中,很少会出现 LinkageError
、VirtualMachineError
、OutOfMemoryError
等错误。 主要是由于用户的错误而导致的异常。
因此,最佳实践是使用 Exception 类的实例而不是 Throwable 类。
相关文章
Java 错误 Java.Security.InvalidKeyException: Illegal Key Size
发布时间:2023/07/15 浏览次数:98 分类:Java
-
本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。
Java 错误 Java.SQL.SQLException: Access Denied for User Root@Localhost
发布时间:2023/07/15 浏览次数:71 分类:Java
-
本篇文章介绍如何解决 Java 中的 java.sql.SQLException: Access Denied for user 'root'@'localhost' 错误。修复 Java 中的 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Java 异常 Java.Lang.ClassNotFoundeException: Sun.Jdbc.Odbc.JdbcOdbcDriver
发布时间:2023/07/15 浏览次数:105 分类:Java
-
本篇文章介绍了 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 错误。修复 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
Java 错误 Gateway Process Exited Before Sending Its Port Number
发布时间:2023/07/15 浏览次数:104 分类:Java
-
本篇文章介绍了 Java 中 Java gateway process exited before sending the driver its port number 错误 Java gateway process exited before sending the driver its port number 错误
修复 Java 中 Java.Net.BindException: Address Already in Use: Bind 错误
发布时间:2023/07/15 浏览次数:76 分类:Java
-
本篇文章介绍了 Java 中的 java.net.BindException:Address already in use: Bind 错误。修复Java 中的 java.net.BindException:Address already in use: Bind
修复 Java 中 Java.Net.SocketException: Broken Pipe 错误
发布时间:2023/07/15 浏览次数:162 分类:Java
-
本篇文章介绍了使用 Java 编程的 java.net.SocketException: Broken pipeline 错误,并重点介绍了其可能的原因和解决方案。错误描述、原因及解决方法
Java 异常 Java.Lang.ClassNotFoundException: Org.SpringFramework.Web.Servlet.Dis
发布时间:2023/07/15 浏览次数:179 分类:Java
-
今天关于 Java 的文章将介绍错误 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet。什么是 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
Java 抛出运行时异常 Throw Runtime Exception
发布时间:2023/07/15 浏览次数:146 分类:Java
-
本篇文章介绍如何在 Java 中引发运行时异常。Java 抛出运行时异常 Runtime Exception 是所有 Java 异常的父类,这些异常发生时会导致程序崩溃或崩溃。
Java 中抛出新异常 Throw New Exception
发布时间:2023/07/15 浏览次数:130 分类:Java
-
本文将展示如何使用 if ... else 条件语句生成错误。 我们还将使用示例和解释来讨论该主题,以使该主题更容易。在 Java 中生成一个简单错误