java中的一般异常与运行时异常

Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。

出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常,或者是通过对异常的处理显式的控制程序退出。

时间: 2024-10-16 16:41:08

java中的一般异常与运行时异常的相关文章

编译时异常与运行时异常的区别

Java异常类层次结构图 Java异常类层次结构图 运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常).IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理.这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生. 运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕

java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

/** * Return whether the given throwable is a checked exception: * that is, neither a RuntimeException nor an Error. * @param ex the throwable to check * @return whether the throwable is a checked exception * @see java.lang.Exception * @see java.lang

Java异常与运行时异常,以及与线程的关系

具体可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6171103.html 都写在里面了,为了避免更新不一致,这里就不再写一遍了.只给个链接.

Java运行时异常和非运行时异常

1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类.Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示: 图片来源:http://blog.csdn.net/wuwenxiang91322/article/details/10346337 2.Throwable Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常.其中异

java 异常-运行时异常

/* Exception中有一个特殊的子类异常RunTimeException运行时异常. 如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过. 如果在函数上声明了该异常.嗲用着可以不要进行处理.编译一样通过. 之所以不用在函数声明,是因为不需要让调用者处理. 当该异常发生,希望程序停止.因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修改. 自定义异常时,如该异常的发生,无法再继续进行运算,就让自定义异常继承RunTimeException.运行时异常,会引发程序停止

区分运行时异常和受检查异常【文摘+转】

正确运用异常处理机制,有助于提高程序的健壮性. 所谓程序的健壮性,就是指程序在多数情况下能够正常运行,返回预期的正确结果:如果偶尔遇到异常情况,程序也能采取周到的解决措施. 受检查异常表示程序可以处理的异常,如果抛出异常的方法本身不能处理它,那么方法调用者应该去处理它,从而使程序恢复运行,不至于终止程序.例如,喷墨打印机在打印文件时,如果纸用完或者墨水用完,就会暂停打印,等待用户添加打印纸或更换墨盒,如果用户添加了打印纸或更换了墨盒,就能继续打印. 可以用OutOfPaperException类

运行时异常和checked异常

运行时异常在运行期间才能被检查出来,一般运行期异常不需要处理.Checked异常在编译时就能确定,Checked异常需要自己处理. checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch.所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常. runtime exception,也称运行时异常,我们可以不处理.当出现这样的异常时,总是由虚拟机接管.比如:我们从来没有人去

Exception、Error、运行时异常与一般异常有何异同

转自博客  https://blog.csdn.net/m0_37531231/article/details/79502778 一.开场白 对于程序运行过程中的可能出现异常情况,java语言使用一种称为异常处理的错误捕捉机制进行处理.相信大家对 try { }catch( ){} finally{} 这种结构非常熟悉,使用频率极高.既然经常使用它,而且也是面试常问知识点,我们就有必要去深入地了解一下.也谈不上深入,只是java语言的基本功.下面,开始吧! 二.异常分类 在java中,异常对象都

运行时异常与一般异常区别

Java提供了两类主要的异常:runtime exception和checked exception. checked exception: checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常. 对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch. 所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常. 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误. r