java异常

异常

异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序

异常处理

try/catch

.....

try{

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

}catch(异常类型 e){

    //若发生异常,catch负责捕获(匹配)并处理异常

    //若没有发生异常,则跳过catch

}

.....


异常过程处理

Exception是所有异常类的直接或间接父类

异常类型不匹配时,程序中断运行


try/catch/finally

.....

try{

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

}catch(异常类型 e){

        //若发生异常,catch负责捕(匹配)并处理异常

        //若没有发生异常,则跳过catch,执行finally

}finally{

    //finally 用于进行收尾工作(关闭数据库、文件,释放内存等资源)

}

.....

不管是否发生异常,finally都执行

执行finally前,system.exit(0) 正常退出jvm,finally不会执行

catch可以省略,变成try/finally块


return在try/catch/finally块中的执行顺序

顺序执行后返回执行return


异常的分类


Throwable类是 Java 语言中所有错误(Error)或异常(Exception)的父类

Error类表示错误类。仅靠程序本身无法恢复的严重错误

Exception 类表示异常类,可以通过java 异常处理机制处理。


异常分为两种情况

RuntimeException:    运行时异常。不要求程序必须做出处理。是所有运行时异常的父类。

CheckedException:    检查时异常。要求程序必须处理,不处理编译不通过。


运行时异常和检查时异常的区别

运行时异常:包括RuntimeException及其所有子类。不要求程序必须对它们作出处理,比如InputMismatchException、ArithmeticException、NullPointerException等。即使没有使用try-catch或throws进行处理,仍旧可以进行编译和运行。如果运行时发生异常,会输出异常的堆栈信息并中止程序执行。

Checked异常(非运行时异常):除了运行时异常外的其他异常类都是Checked异常。程序必须捕获或者声明抛出这种异常,否则出现编译错误,无法通过编译。


声明异常

一个方法可能存在异常,而此时自身又无法更好的处理,可以交给外界处理。此时用throws声明并抛出异常。

如:public   staticint   div(inta,int b)    throws    ArithmeticException{

}

用throws声明后,调用处需要处理该异常,若是不知道如何处理异常,可继续声明异常,这个过程称为异常上抛


声明异常和方法重载的关系

方法重载与声明异常无关


声明异常和方法重写的关系

1.父类方法声明了异常,子类可不声明任何异常

可以认为父类方法抛出异常,子类在重写过程中把该异常处理掉了,所以子类方法不用声明异常。

2.父类声明了异常(检测时或运行时),子类声明完全一样的异常


手动抛出异常

除了系统自动抛出异常外,有些问题需要开发者手动抛出异常。

而手动抛出异常需要使用关键字throw

public class Student {

     private String name;

     private String gender;


     public String getName() {

         return name;

     }


     public void  setName(String name) {

         this.name = name;

     }


     public String getGender() {

         return gender;

     }


     public void  setGender(String gender) throws  Exception{

         if(gender.equals("男") || gender.equals("女")) {            

              this.gender = gender;

         }else {

              throw new Exception("性别不合法!");

         }

     }


     public  Student(String name, String gender) {

              super();

              this.name = name;

              this.gender = gender;

     }


     public  Student() {

         super();

     }


}

--------------------------------------------

public class Test01 {

     public static void  main(String[] args){

         Studentstu = new Student();

         stu.setName("二狗");

         try {

              stu.setGender("xxx");

         }catch (Exception e) {

              System.out.println(e.getMessage());

         }

     }

}

自定义异常

如果开发者需要手动抛出的异常在系统不存在,可以自定义异常。

如果要自定义异常,首先要确定异常类型,如果异常是运行时异常,必须继承RuntimeException或其子类;如果异常是检查时异常,必须继承Exception或其子类。

异常的命名方式,参考系统命名方式,以Exception结尾。

public classAgeExceptionextends Exception{


     public AgeException(){

         super();

     }


     publicAgeException(Stringmessage) {

         super(message);

     }


}

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

推荐阅读更多精彩内容

  • Java异常类型 所有异常类型都是Throwable的子类,Throwable把异常分成两个不同分支的子类Erro...
    予别她阅读 926评论 0 2
  • 异常分类 Java将异常分为两种,Checked异常和Runtime异常。Java认为Checked异常都是可以在...
    LLorenzo阅读 710评论 0 1
  • 目录介绍 10.0.0.1 见过哪些运行时异常?异常处理机制知道哪些?从异常是否必须需要被处理的角度来看怎么分类?...
    杨充211阅读 478评论 0 1
  • 马上11:00了,此刻我才来日更,为什么? 只因昨日公司年会,大家玩得比较high,回到家收拾收拾,差不多凌晨2:...
    姵颖阅读 160评论 0 0
  • 第一次骑电动车,我就把人摊子给撞了。 01 我不会骑车,自行车也骑不好,就别提电动车了。或许你都从来没见过这么笨的...
    天黑不卸妆阅读 486评论 0 2