zoukankan      html  css  js  c++  java
  • Java中异常体系

    Java中的异常体系


     对异常已经学了很久了,最近又有新的理解,再更新一下这个文章,主要给自己看。

    1、异常体系

    ======================================================== 

    Throwable,是一个类,表示可抛出的,它是所有的异常都继承的类。

    Throwable的子类,又分为两种,一种是Error,另一种是Exception。

    Error系的类一般不是应用程序抛出的,而是Jvm抛出的,用户的Java程序不需要管,而且它是运行的时候Jvm抛出的,Java程序想管也管不了。

    Exception是用户的Java程序抛出来的,又分为两种。一种是Runtime Exception,就是运行时异常。另一种是非Runtime Exception,就是除了Runtime Exception的子类外其他的类,统称为非Runtime Exception。

    Runtime Exception是用户的Java程序运行过程中,Java程序自己产生的,它和上面的Error有所区别,Error是Java程序运行过程中Jvm抛出来。因为Java程序是由Jvm去执行的,所以表面上看一个Java程序运行的过程中只有JVM的进程在操作系统中可见,其实这个进程中运行的程序分为两部分,一部分是JVM自己的代码,另一部分是用户写的Java程序。那么,在运行的过程中,jvm抛出的异常就是Error的子类,用户写的java程序抛出的异常就是Runtime Exception的子类。(这里要注意区分Jvm和用户的Java程序这两个东西,不是同一个东西)这就是Error和Runtime Exception的区别。

    2、Checked Exception和Unchecked Exception

    ====================================

    首先,要明白Checked的含义。

    Checked的含义是检查,主要指的是用户写的Java程序接受Javac这个编译器的检查。

    其次,要明白Checked Exception的含义。

    因为受检指的是受Javac这个编译器的检查,因此,Java程序在编译的过程,Javac编译器检查出来的异常就称为Checked Exception(受检异常)。

    从这个定义可以看出来,Error肯定不是受检异常,因为它是在运行阶段由Jvm抛出来的,在编译阶段,javac是只处理用户的Java程序的,不会有Jvm的参与,因此Error肯定不是受检异常。

    从这个定义还可以看出来,Runtime Exception肯定也不是受检异常,因为它是在运行阶段由Java程序抛出来的。

    从这个定义和以上的分析中,可以看出来,受检异常就是所有的非Runtime Exception,也就是如下图所示的各种异常。

    3、各种异常如何对待

    =================

    受检异常,也即所有的非Runtime Exception,在编译阶段都会被查出来,这就要求Java程序自己必须得要catch这个异常,否则,Java程序就无法通过编译。因此,受检异常是Java程序必须要用catch块去处理的异常。

    Unchecked Exception,就是除Checked Exception之外的全部Exception,包括Error和RuntimeException。他们无需Java程序自己理会,程序员不需要处理这些异常。

    所以,所谓异常处理,主要是值得去处理Unchecked Exception。

    4、如何处理异常

    =============

    处理异常就是try catch finally。

    没有新的理解了。

  • 相关阅读:
    SQL Server 内存数据库原理解析
    SQL Server 利用游标解决Tempdb究极竞争-DBA-程序员需知
    SQL Server 利用锁提示优化Row_number()-程序员需知
    SQL Server并行死锁案例解析
    SQL Server In-Memory OLTP 无损PPT分享
    SQL Server优化器特性-动态检索
    SQL Server 隐式转换引发的躺枪死锁-程序员需知
    SQL Server 优化器特性导致的内存授予相关BUG
    SQL Server优化器特性-位图过滤(Bitmap)
    SQL Server优化技巧之SQL Server中的"MapReduce"
  • 原文地址:https://www.cnblogs.com/zhangzl419/p/10549616.html
Copyright © 2011-2022 走看看