Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何枚举Java中所有可能的错误?_Java_Error Handling - Fatal编程技术网

如何枚举Java中所有可能的错误?

如何枚举Java中所有可能的错误?,java,error-handling,Java,Error Handling,我不是指单个程序中的每一个错误,而是指Java8中可能出现的每一个错误。Java文档中有什么地方可以找到它吗 在我看来,这更像是一个研究问题,而不是一个可靠的实现问题,但无论如何,您有两条查询线: 1) 编译后可能发生的任何错误都只会作为Throwable类型的实例发生,如果要跟踪所有这些错误,则需要包含运行库的每个部分(以及项目中包含的任何其他可能的用户定义库)在一个类中,您打算使用该类向您或您正在运行的项目程序报告它们。然后,您将使用反射在列表中填充所有当前定义的类,该列表包含任何返回tru

我不是指单个程序中的每一个错误,而是指Java8中可能出现的每一个错误。Java文档中有什么地方可以找到它吗

在我看来,这更像是一个研究问题,而不是一个可靠的实现问题,但无论如何,您有两条查询线:

1) 编译后可能发生的任何错误都只会作为Throwable类型的实例发生,如果要跟踪所有这些错误,则需要包含运行库的每个部分(以及项目中包含的任何其他可能的用户定义库)在一个类中,您打算使用该类向您或您正在运行的项目程序报告它们。然后,您将使用反射在列表中填充所有当前定义的类,该列表包含任何返回true作为instanceof Throwable的内容,这假设您需要所有可能的类名。这些异常的潜在原因只能通过与任何给定的Throwable类相关的文档来暗示

2) 另一方面,如果您还需要所有编译时错误,那么您需要查找Java编译器的源代码


但老实说,异常之所以被称为异常,是因为它报告了基于异常情况的故障,您应该能够在开发过程中抢占该异常情况。任何错误到足以使程序停止工作的情况都会抛出异常,并捕获任何可丢弃的内容,而不区分具体类型,这不是应该考虑实现的事情——除非使用“最后一次机会”的心态(如果我的软件没有在我能看到的所有情况下解决这个问题,那么它可能能够重置为零,而不会完全崩溃)。

您可以通过查看
java.lang
软件包的目录来了解这些问题,并导航到Throwable(您可以通过在导航栏中选择Tree来访问此视图)

是Java中所有错误和异常的根源

  • java.lang.Error
    :异常/致命错误的根源
  • java.lang.Exception
    :已检查异常的根[*]
  • java.lang.RuntimeException
    :未检查异常的根

[*]if extensed Exception而不是RuntimeException

Throwable的所有子类都是您的枚举。每个子类都对应一个错误吗?可能我不理解您的问题。枚举所有错误是什么意思?我的意思是获取可以停止程序的每种类型的错误的列表,以及是什么启动了它们。不,因为(a) 任何程序员都可以声明自己的异常,如果抛出而未捕获,程序将停止。您无法枚举尚不存在的内容。(b)JVM中始终存在可能导致异步错误的错误。这是您事先不知道会引发错误的原因。(c)人们可以用他们自己的方式使用现有的异常,所以同样的情况也不知道。