运行时异常非运行时异常区别?

如题所述

第1个回答  2021-01-04

    运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。

    非运行时异常(受检异常)跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕获的运行时异常。

异常和继承一样,是面向对象程序设计中经常被滥用的东西,神作《Effective Java》中对异常的使用给出了以下指导原则:

    不要将异常处理用于正常的控制流(设计良好的API不应该强迫它的调用者为了正常的控制流而使用异常)

    对可以恢复的情况使用受检异常,对编程错误使用运行时异常

    避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常发生)

    优先使用标准的异常

    每个方法抛出的异常都要有文档

    保持异常的原子性

    不要在catch中忽略掉捕获到的异常 

本回答被网友采纳
第2个回答  推荐于2019-08-17
Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception 。
Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
Exception :表示可恢复的例外,这是可捕捉到的。
Java 提供了两类主要的异常 :runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行
catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。

但是另外一种异常: runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机 接管。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由 Thread.run() 抛出 ,如果是单线程就被 main() 抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是
Exception 的子类,也有一般异常的特点,是可以被 Catch
块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

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

异常处理的目标之一就是为了把程序从异常中恢复出来 。本回答被网友采纳

运行时异常和一般异常的区别
运行时异常和一般异常的区别:1、定义不同。运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等。一般异常是RuntimeException以外的异常,类型上来都属于Exception类及其子类。2、处理方法不同。运行时异常是不检查异常,程序中可以选择捕获处理,也可以不处理。对...

运行时异常与非运行时异常有什么区别?
异常表示程序运行过程中可能出现的非正常状态 运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。非运行时异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是...

运行时异常与一般异常有何不同
Java提供了两类主要的异常:运行时异常runtime exception和一般异常checked exception。checked 异常。对于后者这种异常,JAVA要求程序员对其进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。运行时异常我们可以不处理。这样的异常由虚拟机接管。出现运行时异常后,系统...

运行时异常与一般异常有何异同?
运行时异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的。当出现RuntimeException的时候,我们可以不处理,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,如果...

异常(Exception)分几种类型?有什么区别?写出几个常见异常。
1、运行时异常都是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。2、非运行时异常是指 RuntimeException 以外的异常,...

Java中什么是运行时异常,什么是非运行时的异常?
运行时异常一般是属于可控制的,比如说我有个参数是必须输入的但是又是认为的控制输入那么这里我可以有这么一个判断如果这个参数为空我就抛出一个运行时异常告诉用户这个参数必须输入,非运行时异常则是代码里面有bug本身不知道哪里会有错但是出错了不可控制的异常情况。

java 运行期和非运行期的异常处理有什么区别
运行期的异常不需要你去捕获,直接交由系统处理,而非运行期的异常是需要人为去捕获处理的。它们都是从抛出异常类Throwable继承而来的,它派生出两个类Error和Exception。由Error派生的子类命名为XXXError,其中词XXX是描述错误类型的词。由Exception派生的子类命名为XXXException,其中词XXX是描述异常类型的词...

Java中,运行异常和一般异常的区别是什么?
运行时异常:由java虚拟机抛出的异常。用户不必处理。 而一般异常是用户可以抛出的异常,如果抛出调用必须进行处理。\\x0d\\x0a\\x0d\\x0a1,从机制角度来讲:\\x0d\\x0a 运行时异常:\\x0d\\x0a在定义方法时不需要声明会抛出runtime exception;\\x0d\\x0a在调用这个方法时不需要捕获这个runtime ...

...检查性异常,非检查性异常,运行时异常非运行时异常,我怎么晕了啊_百...
检查性异常: 不处理编译不能通过 非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台。运行时异常: 就是非检查性异常 非运行时异常: 就是检查性异常

什么叫异常
异常通常包括以下几种类型:1.语法异常:这类异常是由于代码中存在语法错误导致的。例如,编写代码时使用了错误的语法结构或关键字,编译器在编译阶段就会抛出语法异常。2.运行时异常:这类异常是在程序运行时发生的,通常是由于不正确的操作或输入数据引起的。例如,尝试访问空指针或数组越界等。这类异常...

相似回答