zoukankan      html  css  js  c++  java
  • Java异常-一般异常和运行时异常的区别

       Java提供了两类主要的异常:runtime exception和checked exception。checked

    异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,

    JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常

    不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

      总的来说一句话,runtime exception是可以不捕获,由程序自动往外抛;checked exception则必须捕获(try/catch)的,必须当下处理;

          但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理

    。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过

    NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异

    常之一。

          出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果

    没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就

    被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛

    出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一

    般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就

    是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程

    中止,要么是主程序终止。

          如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。

    队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。

    不应该由于异常数据而影响下面对正常数据的处理。在这个场景这样处理可能是

    一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,

    遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常,或

    者是通过对异常的处理显式的控制程序退出。

  • 相关阅读:
    python note 30 断点续传
    python note 29 线程创建
    python note 28 socketserver
    python note 27 粘包
    python note 26 socket
    python note 25 约束
    Sed 用法
    python note 24 反射
    python note 23 组合
    python note 22 面向对象成员
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4439130.html
Copyright © 2011-2022 走看看