第8章 异常处理2020-02-25


FileNotFoundException   io异常

ArithmeticException  算术异常

NullPointerException试图访问 null 对象引用

ArrayIndexOutOfBoundsException 数组下标越界异常




异常处理机制

try…catch语句

catch块,是用来捕获并处理try块抛出的异常的代码块。没有try块,catch块不能单独存在。我们可以有多个catch块,以捕获不同类型的异常

try{…}和catch( ){…}之间不可以添加任何代码





try {

int[] arr=new int[4];

System.out.println(arr[4]);

//int[] arr=null;

//System.out.println(arr[4]);

// int 10/0;

}catch(ArithmeticException e) {  //try catch 可以捕获多个异常

  System.out.println("出现了数学异常, ");

}catch(ArrayIndexOutOfBoundsException e) {

  System.out.println("数组下标越界了,请注意修改查询的下标");

}catch(Exception e) {  //父类异常 要写在下面 子类在上  如果没有继承关系 则无上下之分

System.out.println("其他异常");

}

System.out.println("*************");



catch表达式调整

JDK 7中,单个catch块可以处理多个异常类型



finally异常处理机制

finally 语句

finally语句放在try …catch语句后

fianlly语句中的代码块不管异常是否被捕获总是要执行


通常在finally语句中可以进行资源的清除操作,如:关闭打开文件、删除临时文件

对应finally代码中的语句,

即使try代码块和catch代码块中使用了return语句退出当前方法或般若break跳出某个循环,相关的finally代码块都有执行。

当try或catch代码块中执行了System.exit(0)时,finally代码块中的内容不被执行

throws (声明)关键字

如果一个方法中的语句执行时可能生成某种异常,但是并不能确定如何处理,则可以在程序所在的函数声明后,使用throws关键字抛出异常

throws关键字

如果一个方法中的语句执行时可能生成某种异常,但是并不能确定如何处理,则可以在程序所在的函数声明后,使用throws关键字抛出异常

位置:函数参数列表的后面

throws关键字后面,可以跟多个异常,中间用逗号分割

throws关键字抛出的异常,由调用该函数的函数处理。

throws关键字

方法中如果用throws关键字抛出:

非检查性异常:上一级去除异常,直到不抛出异常;

检查性异常

在调用该函数内try-catch,把异常处理掉。那么不往上一级抛出异常,程序正常执行,上一级方法并不知道曾经产生异常。

用throws声明方法抛出异常,不进行处理。谁调用谁负责处理

覆盖方法抛出异常时,可以抛出与被覆盖方法相同的异常或者被覆盖方法异常的子类异常。

throw语句

异常是通过关键字throw抛出,程序可以用throw语句引发明确的异常。

例如:

例:

//throws声明异常 FileNotFoundException

public static void method2() throws FileNotFoundException {

FileInputStream fi=new FileInputStream(new File("d:/adsf"));

}

//throws  与 throw

//throw 手动抛出异常

//throws 声明可能出现的异常

public static void method3()  {

//throw new FileNotFoundException();// io

//throw new ArrayIndexOutOfBoundsException();

}


原理图

向上抛 错误信息








自定义异常类

自定义异常类

如果Java提供的异常类型不能满足程序设计的需要,我们可以定义自己的异常类型。

用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类

子类

package com.neusoft.test4;

public class Myexception extends Exception{

  public Myexception(String message) {

        super(message);

    }

}

测试类

package com.neusoft.test4;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

public class Test1 {

public static void main(String[] args) throws FileNotFoundException, Myexception  {

method4();

}

public static void method4() throws Myexception {

int a=11; //1~10

if(a>10 || a<0) {

// 抛出越界异常

throw new Myexception("输入范围应为1~10,目前越界");

}

}

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

推荐阅读更多精彩内容