异常

异常Throwable

异常(Throwable).png

概念:

Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java 语句抛出。类似地,只有此类或其子类之一才可以是 子句中的参数类型。

特点:

Throwable是一个实体类:可以从他的构造方法和方法来以及他的子类看他的特性和属性。

Error

概述:

Error 是 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 错误是一个“正规”的条件,但它也是 的子类,因为大多数应用程序都不应该试图捕获它。

特点:

错误是无法处理的,必须改源码,就相当于某个机器的零件缺少或者是坏道了必须更换才能让机器正常运行。

Exception

概念:

Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。

特点:

  • 编译期异常:程序在编译器就报出的异常,这里需要我们先解决这个异常才能运行程序
  • 运行期异常:编译器不会报的异常,而是程序在执行到某段代码时才会报出的异常。

用法:

  1. throw关键字

    • 在指定的方法内部抛出指定的异常
    • 格式:throw new xxException("产生异常的原因");
    • throw方法后面new的必须是Exception类对象或者Exception类的子类对象
    • 当throw抛出这个异常的时候我们就要对其进行处理不然JVM会终止程序的运行的
      • 当new的对象是RuntimeException或者RuntimeException的子类对象时我们可以不进行处理默认交给JVM处理(打印异常对象,终止程序运行)
      • 当new的对象时编译器异常时,我们就要对其进行处理了。
        1. throws抛给调用者
        2. try ......catch捕获处理
public class Demo_Throw {
    public static void main(String[] args) {
        int [] array = null;
        int [] arr=new int[3];
        int index=0;
        int index1=4;
//        getElement(array,index);
        getElement1(arr,index1);
    }
    private static void getElement1(int[] arr, int index1) {
        if (index1<0||index1>arr.length){
            throw new IndexOutOfBoundsException("index索引越界");
        }
    }
    private static void getElement(int[] array, int index) {
        if (array==null){
            throw new NullPointerException("数组为空");
        }else {
            int value=array[index];
        }
    }
}
  1. throws关键字

    • throws:处理异常的一种方式,写在方法名后面。
    • 作用:将异常交给方法的调用者处理,如果他的调用者也不处理最后将会由JVM进行处理(打印异常类,终止程序)
    • 格式:修饰符 返回类型 方法名称(参数列表)throws XXXException,YYYException....{}
    • 注意:当throws后面接的异常对象有多个时,必须都要写上,如果这多个对象有子父类关系时,可以只写父类
public class Demo_Throws {
    public static void main(String[] args) throws IOException {
        demo("C;\\a.txta");
    }
    private static void demo(String fileName) throws IOException {
        if(!fileName.endsWith(".txt")){
            throw new IOException("file type error" );
        }else {
            System.out.println("file read OK");
        }
    }

}
  1. try....catch...finally捕获异常进行处理

    • 异常的第二种处理方式,当throw抛出异常时,我们用它进行捕获然后处理,这样不影响程序的后续执行,即不会终止程序,这也是开发中最推荐使用的一种方式。

    • 格式:

      try{
         可能出现异常的代码块
      }catch(异常类名 变量名){
          //这里可以使用自定义的异常类,但是自定义的异常类必须继承Exception才能使用
         这里对异常进行处理,一般时存入错误日志
      }finally{
         强制要执行的(无论程序是否出现异常都要执行的)
      }
      //这里的finally不是一定需要的,finally一般用来释放某种资源占用,它不能单独存在,必须依托try catch存在
      
    • 使用案例:

public class Demo_TryCatchFinally {
    public static void main(String[] args){
        try {
            demo("C;\\a.txta");
        }catch (IOException e){
            e.printStackTrace();//打印详细异常信息
        }finally {
            //释放IO资源
            System.out.println("成功释放资源");
        }

    }
    private static void demo(String fileName) throws IOException {
        if(!fileName.endsWith(".txt")){
            throw new IOException("file type error" );
        }else {
            System.out.println("file read OK");
        }
    }

}

总结

异常处理.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容

  • 1、异常 1.1、异常介绍 异常:不正常。生活中的异常:例:在上课时,突然间停电,造成上课终止。 处理:等待来...
    Villain丶Cc阅读 975评论 0 5
  • 什么是异常? 异常本质上是程序上的错误,错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误。 编译...
    若兮缘阅读 3,341评论 0 11
  • 异常分类 Java将异常分为两种,Checked异常和Runtime异常。Java认为Checked异常都是可以在...
    LLorenzo阅读 707评论 0 1
  • Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理...
    JourWon阅读 1,254评论 0 5
  • 近来天气似乎越来越嚣张了,风肆虐的吹,从裤管使劲钻进来,冷得每一个毛孔都拼命的收缩。 我已经三天早上没有洗脸了,冷...
    十三平米阅读 282评论 0 7