异常处理

1. 异常机制

(1) 异常概念及常见异常

    ① 什么是(现实生活中的)异常?

        强强:正常上学路上,突然遇到钢管:亲密的接触:耽误上学

    ②什么是Java中的异常

        代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行

        代码中的异常处理好了,代码就可以顺利的继续运行!

(2) 异常的体系结构



    异常都有继承结构分

(3)异常的处理方式

    ① 自己捕获处理

        自己处理,对可能发生异常的代码做处理:

           try{

            //可能发生异常的代码块

           }catch(发生异常的类型 形式参数){

               //在发生异常之后做相应的处理

            }catch(发生异常的类型形式参数){

            }catch(发生异常的类型 形式参数){

            }catch(发生异常的类型 形式参数){

            }finally{

            //一场代码块,执行完成之后,这个位置一定会执行的

          //一般在这里释放锁,或者关闭流资源

            }

        执行流程:进入try语句块----

        正常运行:finally

        发生异常:进入对应异常类型的catch语句块


    ② 自己不处理,抛出给别人

    a. 抛出异常 :自己不处理:抛出:给别人处理

    b. 如果直接抛出异常,发生异常之后的代码是不会运行的

    c. 什么时候可以抛出异常:  除非你发生异常之后的代码,不需要运行的,可以选择抛出

    d.抛出捕获一样的特点:   还是可以抛出父类类型

    e.可以抛出多个异常的

(4) 获得异常信息

    ①(捕获的异常类型 e)捕获的异常实际捕获一个异常对象,该对象e可以在catch语句块直接使用

    ②System.out.println(e);//①直接打印异常对象:发现父类toString覆写了

    ③ System.out.println(e.getMessage());//②异常对象调用方法获取异常信息

    ④ e.printStackTrace();//③【异常对象调用方法,方法内部打印信息】最常用方式用异常对象去获得异常信息

(5) finally语句块

        finally语句块

             try{

             }catch(){

             }fianlly{

  一定会执行的语句块【前提是没有关闭虚拟机】:释放锁,关闭流资源

              }

         finally:特点:return特点别讲解

         只要执行了,return结束方法【finally 结构结束无效:缓存:暂时存着,真的结束才给出去】

        (6) throw主动抛出异常

        异常情况很多,Java不可能写完所有的异常类型,自己写异常类型,表达你业务中的异常类型

        public static void main(String[] args) {

        UserName("李四");

        }

        static String[] name ={"王二","张三"};//创建一个String类型的数组,作为数据库,并赋值

        public static void UserName(String username){//设计一个方法,如果输入的用户名是数据库里有的,就自己抛出错误,如果没有就提示注册成功

            for (String a: name) {//遍历数据库中的值,

                if(username.equals(a)){//判断,如果的值如果和数据库中搞得值一样,则自己抛出错误

                        throw new NullPointerException("用户名已存在");//抛出错误

                }

            }

                System.out.println("注册成功");

}

(7) 自定义异常

    ① 为什么需要自定义异常:

    自定义异常类型,满足自己不同业务的:异常类型,描述的需求

        public class UserAccountExit extends RuntimeException{

        // 设计一个类,自定义错误类型,继承父类RuntimeException

        UserAccountExit(String b){//创建一个构造方法

        super();//信息,被传入到了父类的字段,并且父类已经覆写了toString

        }

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