• Java异常分类


    一、基本概念

    看java的异常结构图

    Throwable是所有异常的根,java.lang.Throwable
    Error是错误,java.lang.Error
    Exception是异常,java.lang.Exception

    二、Exception

    一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。

    ①Checked异常

    只有java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种

    1 当前方法知道如何处理该异常,则用try...catch块来处理该异常。
    2 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。

    1. package cn.xy.test;  
    2.   
    3. import java.io.IOException;  
    4.   
    5. /** 
    6.  * Checked异常测试方法 
    7.  * @author xy 
    8.  * 
    9.  */  
    10. public class CheckedExceptionMethods  
    11. {  
    12.     // 总异常类,既有checkedException又有RuntimeException,所以其中的checkedException必须处理  
    13.     public void method1() throws Exception  
    14.     {  
    15.         System.out.println("我是抛出异常总类的方法");  
    16.     }  
    17.   
    18.     // 捕获并处理这个异常  
    19.     public void testMethod1_01()  
    20.     {  
    21.         try  
    22.         {  
    23.             method1();  
    24.         }  
    25.         catch (Exception e)  
    26.         {  
    27.             e.printStackTrace();  
    28.         }  
    29.     }  
    30.   
    31.     // 把异常传递下去  
    32.     public void testMethod1_02() throws Exception  
    33.     {  
    34.         method1();  
    35.     }  
    36.   
    37.     public void testMethod1_03() throws Exception  
    38.     {  
    39.         throw new Exception();  
    40.     }  
    41.   
    42.     public void testMethod1_04()  
    43.     {  
    44.         try  
    45.         {  
    46.             throw new Exception();  
    47.         }  
    48.         catch (Exception e)  
    49.         {  
    50.             e.printStackTrace();  
    51.         }  
    52.     }  
    53.   
    54.     // checkedException典型代表IOException  
    55.     public void method2() throws IOException  
    56.     {  
    57.         System.out.println("我是抛出IO异常的方法");  
    58.     }  
    59.   
    60.     public void testMethod2_01()  
    61.     {  
    62.         try  
    63.         {  
    64.             method2();  
    65.         }  
    66.         catch (Exception e)  
    67.         {  
    68.             e.printStackTrace();  
    69.         }  
    70.     }  
    71.   
    72.     public void testMethod2_02() throws Exception  
    73.     {  
    74.         method2();  
    75.     }  
    76.   
    77. }  

    我们比较熟悉的Checked异常有

    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
    java.io.IOException

     

    ②RuntimeException

    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

    1. package cn.xy.test;  
    2.   
    3. /** 
    4.  * 运行时异常测试方法 
    5.  * @author xy 
    6.  * 
    7.  */  
    8. public class RuntimeExcetionMethods  
    9. {  
    10.     public void method3() throws RuntimeException  
    11.     {  
    12.         System.out.println("我是抛出运行时异常的方法");  
    13.     }  
    14.   
    15.     public void testMethod3_01()  
    16.     {  
    17.         method3();  
    18.     }  
    19.   
    20.     public void testMethod1_02()  
    21.     {  
    22.         throw new RuntimeException();  
    23.     }  
    24. }  

    我们比较熟悉的RumtimeException类的子类有

    Java.lang.ArithmeticException
    Java.lang.ArrayStoreExcetpion
    Java.lang.ClassCastException
    Java.lang.IndexOutOfBoundsException
    Java.lang.NullPointerException

     

    三、Error

    当程序发生不可控的错误时,通常做法是通知用户并中止程序的执行。与异常不同的是Error及其子类的对象不应被抛出。

    Error是throwable的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。

    Error由Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。

  • 相关阅读:
    通过指定的“虚拟路径”返回路径下“文件名列表”
    ASP.NET Session丢失问题原因及解决方案
    纯CSS打造Bubble气泡提示框
    分享几个超级震憾的图片特效
    有了jQuery.Jcrop,选取美女的哪个部位你说了算
    jQueryTranslator调用Google翻译实例及源码【译】
    轻松学习正则表达式【译】
    Android系统源代码情景分析:基础知识
    HTML5斯诺克桌球俱乐部【译】
    ASP.NET中使用V3版本的Google Maps API【译】
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/6179213.html
Copyright © 2020-2023  润新知