java try catch finally_java stackoverflowerror

Java (3) 2024-06-13 15:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
java try catch finally_java stackoverflowerror,希望能够帮助你!!!。

java文档中对RuntimeException的定义是:

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

java中Exception分为两类,一类是CheckException一类是UncheckException。并且java的Error都属于UncheckedException。

一、CheckException和UnCheckException的区别:

1、在编译的时候,java编译器会强制你处理CheckException,处理的方式有两种:一种是抛出异常;另一种是捕获异常(常见的有ClassNotFoundException等)。而对于UncheckException编译去则不需要你做任何处理,只是在运行时出现了该类异常,则会被抛出(常见的有:NullPointException,ArrayIndexOutofBoundException等)。

2、Checked exception用来指示一种调用方能够直接处理的异常情况。而Runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。

二、是否应该对RuntimeException处理

总而言之,在程序的运行过程中一个checked exception被抛出的时候,只有能够适当处理这个异常的调用方才应该用try/catch来捕获它。而对于runtime exception,则不应当在程序中捕获它。如果你要捕获它的话,你就会冒这样一个风险:程序代码的错误(bug)被掩盖在运行当中无法被察觉。因为在 程序测试过程中,系统打印出来的调用堆栈路径(StackTrace)往往使你更快找到并修改代码中的错误。有些程序员建议捕获runtime exception并纪录在log中,我反对这样做。这样做的坏处是你必须通过浏览log来找出问题,而用来测试程序的测试系统(比如Unit Test)却无法直接捕获问题并报告出来。

在程序中捕获runtime exception还会带来更多的问题:要捕获哪些runtime exception?什么时候捕获?runtime

exception是不需要声明的,你怎样知道有没有runtime

exception要捕获?你想看到在程序中每一次调用方法时,都使用try/catch程序块吗?

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复