精华内容
下载资源
问答
  • :runtime exceptionchecked exception 可捕捉 处理 error 没办法处理了 :假如出现RuntimeException,那么一定是程序员的错误 ---------------------------------------------...

    :runtime exception和checked exception    可捕捉  处理     error 没办法处理了

    :假如出现RuntimeException,那么一定是程序员的错误 

    -----------------------------------------------------------------------------------------------

     

    Throwable是所有Java程序中错误处理的父类 ,有两种资类:Error和Exception。Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误 ,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。 Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出).假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的. Exception:表示可恢复的例外,这是可捕捉到的。 Java提供了两类主要的异常 :runtime exception和checked exception。 checked异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。 对于这种异常, JAVA编译器强制要求我们必需对出现的这些异常进行catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误. 但是另外一种异常: runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。 RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等.处理RuntimeException的原则是:假如出现RuntimeException,那么一定是程序员的错误搜索.例如,可以通过检查数组下标和数组边界来避免数组越界访问异常. 出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出 ,如果是单线程就被main()抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你 如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。 在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误, 如果退出程序比较好,这时你就可以不太理会运行时异常 ,或者是通过对异常的处理显式的控制程序退出。 异常处理的目标之一就是为了把程序从异常中恢复出来。

    转载于:https://my.oschina.net/u/3253987/blog/885888

    展开全文
  • 1、异常的继承结构运行时异常(非受检异常指的是java.lang.RuntimeExceptionjava.lang.Error类及其子类)也称为未受检异常、非受控异常,受检异常又称为编译异常、受控异常。异常表示程序运行过程中可能出现的非...

    1、异常的继承结构

    67506a562c90389de22a228f0214404a.png

    运行时异常(非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类)也称为未受检异常、非受控异常,受检异常又称为编译时异常、受控异常。异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕获的运行时异常。

    所有异常都是发生在运行阶段,因为只有在运行阶段才能new对象,异常的发生就是new异常对象。

    编译阶段并不会发生异常,因为编译时异常必须在编译阶段预先处理,如果不处理编译器报错,因此得名。

    (1)运行时异常:

    (2)编译时异常:

    2、编译时异常和运行时异常的区别

    (1)编译时异常发生(对于发生概率较高的异常在运行之前需要进行预处理)的概率较运行时异常(概率较低,没必要进行预处理)高,如果java没有将异常进行划分,那么所有的异常都需要进行预处理,虽然程序更加安全,但是程序员的的工作量将大大增加

    (2)编译时异常与受检异常的选用:

    一直以来,关于在程序中到底是该使用受检异常还是非受检异常,开发者之间一直存在着争议,毕竟两类异常都各有优缺点。受检异常的特点在于它强制要求开发人员在代码中进行显式的声明和捕获,否则就会产生编译错误。这种限制从好的方面来说,可以防止开发人员意外地忽略某些出错的情况,因为编译器不允许出现未被处理的受检异常;从不好的方面来说,受检异常对程序中的设计提出了更高的要求。不恰当地使用受检异常,会使代码中充斥着大量没有实际作用、只是为了通过编译而添加的代码。而非受检异常的特点是,如果不捕获异常,不会产生编译错误,异常会在运行时刻才被抛出。

    非受检异常的好处是可以去掉一些不需要的异常处理代码,而不好之处是开发人员可能忽略某些应该处理的异常。一个典型的例子是把字符串转换成数字时会发生java.lang.NumberFormatException异常,忽略该异常可能导致一个错误的输入就造成整个程序退出。

    目前的主流意见是,最好优先使用非受检异常。

    转自:http://blog.csdn.net/nlznlz/article/details/53271045

    (3)处理方式

    受检异常:JAVA编译器强制要求我们必需对出现的这些异常进行catch

    运行时异常:是代码的错误,我们可以不处理,当出现这样的异常时,总是由虚拟机接管

    展开全文
  • 分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!...受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。 Java...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

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

    受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。

    Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕获的运行时异常。

    异常和继承一样,是面向对象程序设计中经常被滥用的东西,在Effective Java中对异常的使用给出了以下指导原则:
    - 不要将异常处理用于正常的控制流(设计良好的API不应该强迫它的调用者为了正常的控制流而使用异常)
    - 对可以恢复的情况使用受检异常,对编程错误使用运行时异常
    - 避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常的发生)
    - 优先使用标准的异常
    - 每个方法抛出的异常都要有文档
    - 保持异常的原子性
    - 不要在catch中忽略掉捕获到的异常

    展开全文
  • 异常表示程序运行过程中可能出现的非正常状态 ... Java编译器要求方法必须声明抛出可能发生未被捕获的受检异常,不要求必须声明抛出运行时异常 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编...

     

    异常表示程序运行过程中可能出现的非正常状态

     

    • 运行时异常,表示程序代码在运行时发生的异常,程序代码设计的合理,这类异常不会发生
    • 受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发
    • Java编译器要求方法必须声明抛出可能发生未被捕获的受检异常,不要求必须声明抛出运行时异常

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • 运行时异常与受检异常的异同

    千次阅读 2016-07-25 11:44:55
    异常表示程序运行过程中可能出现的非正常...Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕获的运行时异常。异常和继承一样,是面向对象程序设计中经常被滥用的东西,在Effecti
  • 面试中遇到一条题,Java中运行时异常与受检异常的区别。特此记录一下。 所有的异常都集成自java.lang.Throwable,它有两个直接的子类:Error、Exception。 Error错误:JVM内部出现的严重问题,无法恢复; Exception...
  • 受检异常运行时异常)和受检异常的区别等
  • 1、运行时异常与受检异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟...
  • RuntimeException异常和受检异常之间的区别:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,...
  • 受检异常 代码 package com.bjpowernode.chapter0101.demo01; /* * 演示运行时异常 * 不需要预处理,通过规范的代码进行规避 */ public class Test01 { public static void main(String[] args) { ...
  • 运行时异常(受检异常) 如果出现了非运行时异常必须进行处理throw或者try{}catch(){}处理,否则编译器报错。 1;IOException 使用要导入包import java.io.IOException; 3:案例 1:定义一测试方法抛出并声明...
  • 受检异常和运行时异常

    千次阅读 2019-06-03 18:59:27
    Java提供了三种可抛出结构:受检异常运行时异常和错误(Error)。 Throwable —Error:未受检异常。 —Exception ——RuntimeException:未受检异常受检异常:如果期望调用者能够适当地恢复,使用受检异常 未...
  • 文章目录参考java 常见异常常见的运行时异常(非受检异常)常见的受检异常 参考 https://blog.csdn.net/u012175512/article/details/81282594 https://blog.csdn.net/HhmFighting/article/details/105028031 java 常见...
  • java受检异常运行时异常

    千次阅读 2017-12-26 15:50:34
    受检查异常表示程序可以处理的异常,如果抛出异常的方法本身不能处理它,那么方法调用者应该去处理它,从而使程序恢复运行,不至于终止程序。 例如,喷墨打印机在打印文件,如果纸用完或者墨水用完,就会暂停打印...
  • 受检异常主要指编译器免检异常,通常包括运行时异常类 Error相关类。 Error Exception 都是 Throwable的子类。 RuntimeException 其子类都属于运行时异常。Error 类其子类都属于错误类。...
  • 1 Error类Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法...Exception类又分为运行时异常(Runtime Exception)受检查的
  • 1.受检异常 ... public class Test1 { public static void main(String[] args) { //sql exception throw new RuntimeException("运行时异常"); } } 2.非受检异常 package com....
  • 对于异常,我们知道,基类为 Throwable,它有两个子类,Exception Error,Exception 通常被称为异常, Error...在决定使用受检异常运行异常时,主要原则: 如果期望调用者能够是当地恢复,对于这种情况就应该...
  • java受检异常和非受检异常的区别

    千次阅读 2019-06-02 08:52:52
    java中异常分为两大类:checkedexception(检查异常)unchecked exception(未检查异常),未检查异常也可以叫做RuntimeException(运行时异常).他们的主要区别:对于运行时异常,java编译器不要求捕获或者一定要继续抛出...
  • 运行时异常是非受检异常,是RuntimeException的子类,即编译器无法检测,因此也不会强制要求程序员处理。 编译异常是受检异常,编译器检测到代码抛出编译异常,会要求程序员必须对该异常做处理(throws或try…...
  • 异常分类 Java中所有异常都是java.lang.Throwable的子类,通常分为三类: Error: 表示不可处理的错误,通常是...通常分为两种: 受检异常(checked exception)受检异常(unchecked exception)。 常见受检异常 常见...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,913
精华内容 2,365
关键字:

运行时异常和受检异常