如何捕获java中不支持的主版本和次版本异常
通过将java版本链接到更高的版本,问题将得到解决,但我不想这样做。我想捕获异常并抛出用户可以理解的消息。是否可能?如果您可以在抛出“不支持的版本”异常的代码周围包装一个try/catch,那么捕获可丢弃的如何捕获java中不支持的主版本和次版本异常,java,exception-handling,Java,Exception Handling,通过将java版本链接到更高的版本,问题将得到解决,但我不想这样做。我想捕获异常并抛出用户可以理解的消息。是否可能?如果您可以在抛出“不支持的版本”异常的代码周围包装一个try/catch,那么捕获可丢弃的就可以了。(最好捕获更具体的异常不受支持的ClassVersionError但是…) 然而,有一些重要的警告: 异常通常在启动JVM时抛出,无法捕获JVM启动期间抛出的异常。(它们通常发生在应用程序的任何代码运行之前;即main方法之前,任何静态初始化之前。) 或者换一种说法,您通常不能将t
就可以了。(最好捕获更具体的异常不受支持的ClassVersionError
但是…)
然而,有一些重要的警告:
- 异常通常在启动JVM时抛出,无法捕获JVM启动期间抛出的异常。(它们通常发生在应用程序的任何代码运行之前;即
main
方法之前,任何静态初始化之前。)
或者换一种说法,您通常不能将try/catch放在引发此异常的代码周围
- 另一种情况是尝试动态加载类(例如,
class.forName
)。。。启动应用程序时不会。在原始(现已删除)代码中,launch
方法可能正在加载一个类,并调用静态或实例方法来“启动”应用程序
- 为了诊断以外的任何目的捕获异常都不是一个好主意。异常是一个
错误
异常,通常来说,这些异常是不可恢复的
这是对的吗?他要问的是,launch(args)将抛出主要版本异常和次要版本异常。实际上,如果是这样的话,那么main方法本身将不会正确触发?@JayaAnanthram-他的launch
方法可能正在使用Class.forName()
或类似的方法来加载一个类,这就是抛出异常。无论如何,我的第一个要点已经解释过,如果异常发生在JVM启动期间,那么它将无法捕获。。在这个问题上没有适当地提到它。我弄糊涂了。。