黑马程序员--异常

来源:互联网 发布:汉邦尚品 知乎 编辑:程序博客网 时间:2024/06/10 22:51

 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

异常

 

异常:指程序运行中所出现的问题,如空指针,角标越界等。这个问题按照面向对象思想进行描述,并封装成了对象。而通过将问题进行分类,发现其中的共有问题,便形成了异常体系。

异常的体系:

Throwable

         |--Error:通常出现重大问题,如:运行的类不纯在或者内存有溢出等。不编写正对代码处理。

         |--Exception:在运行时运行问题的情况,可以通过try catch finally进行解决。

注:ExceptionError的子类名都是以父类名作为后缀。

 

Throwable中的方法:

getMessage():获取异常信息,返回字符串。

toString():获取异常类名和异常信息,返回字符串。

printStatckTrace():获取异常类名和异常信息,以及异常出现在程序中的位置,返回void。

printStatickTrace(PrintStream s):通常用该方法将异常内容保存在异常文件中,以便于查阅。

 

throw和throws

throw用于标识函数暴露出的异常。

throw用于抛出异常对象。

throws和throw的区别:

         throws:用于函数上,后面跟异常对象。

         throw:用于函数内,后面跟异常对象。

 

 

 

异常的处理:

 

异常处理的5个关键字

try ,catch,

finally

throw, throws

 

 

 

异常的处理格式:

         try{

         //处理异常的语句

}catch(异常类 对象){

         //处理异常的语句。

}finally{

         //一定会执行的语句。

}

Finally代码块只有一种情况不会被执行,就是在之前执行了System.exit(0).

package com.itheima;

 

public class ExceptionDemo {

    public static void main(String[] args) throws Exception {

//     throwsDemo();

       tryCatchDemo();

       tryThrowDemo();

    }

 

    private static void tryThrowDemo() {

       // TODO Auto-generatedmethod stub

       try {

           int[]arr = newint[]{1,3,5,7,9};

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

       } catch (ArrayIndexOutOfBoundsExceptione) {

           // TODO Auto-generatedcatch block

           //可以抛出一个新的异常。

           throw new RuntimeException();

       }

      

    }

 

    private static void tryCatchDemo() {

       // TODO Auto-generatedmethod stub

       try {

           int[]arr = newint[]{1,3,5,7,9};

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

       } catch (ArrayIndexOutOfBoundsExceptione) {

           // TODO Auto-generatedcatch block

           //出现异常后的处理方式,此处用打印简单演示。

           System.out.println("角标越界");

       }finally{

           System.out.println("程序执行完毕");

       }

    }

 

    private static void throwsDemo() throws Exception{

       // TODO Auto-generatedmethod stub

       //抛出给上层调用者解决

       int[] arr = new int[]{1,3,5,7,9};

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

    }

}

 

 

 

异常分类:

编译时被检查异常;       ---> Checked异常

在程序中必须使用try...catch处理;

编译时不被检测的异常;        ---> Runtime异常

可以不使用try...catch处理,但一旦出现异常就将由JVM处理。

 

Runtime异常:

RuntimeException(运行时异常)是指因设计或实现方式不当而导致的问题。多半都是程序员不小心所造成的失误,如:角标越界,空指针异常等。

 

Checked异常:

除了RuntimeException以及子类,其他的Exception及其子类都是受检查异常,我们也可以称为非RuntimeException异常。java编译器会检查他,即如出现这种异常,要么用trycatch进行处理或者用throws抛出,编译就不会通过,这种异常程序必须处理。

 

 

 

 

自定义异常:

自定义类继承Exception或其子类。

通过构造函数定义异常信息。

简单示例:

package com.itheima;

 

public class DemoException {

    public static void main(String[] args) {

       try {

           int[]arr =newint[]{1,5,7,8};

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

       } catch (Exceptione) {

           // TODO Auto-generatedcatch block

           throw new Demo3("角标越界异常");

       }

    }

}

class Demo3extends RuntimeException{

    String message;

 

    public Demo3(Stringmessage) {

       super();

       this.message =message;

    }

   

}

 

异常细节:

RuntimeException以及其子类如果在函数中被throw抛出,可以不用再函数上声明。

一个方法被覆盖时,覆盖他的方法必须抛出其相同的异常或异常子类。

 

如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。

 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的手机被偷了怎么办 医保卡不能用了怎么办 招行u盾丢了怎么办 信用卡刷爆了要怎么办 办分期的卡丢了怎么办 房贷银行卡掉了怎么办 房贷银行卡丢了怎么办? 行驶证丢了怎么办补办 行驶证丢了怎么办异地 浦发信用卡盗刷怎么办 苹果id被盗变砖怎么办 信用卡丢了被刷怎么办 ins注册不了怎么办安卓 偷玩电脑被发现怎么办 做作业不认真的怎么办 老人脑供血不足怎么办 哺乳期吃了辣的怎么办 孕32周胎位臀位怎么办 怀孕32周胎位不正怎么办 7个月胎位不正怎么办 胎心监护老不过怎么办 8个月了胎位不正怎么办 怀孕八个月了胎位不正怎么办 怀孕八个月胎位不正怎么办 欠债的人跑了怎么办 赌博输了100万怎么办 我赌博输了4万怎么办 办80张信用卡怎么办的 19岁负债十几万怎么办 欠了十几万该怎么办 网贷负债十几万怎么办 赌博欠了十几万怎么办 欠了网贷跑了会怎么办 欠银行钱还不起怎么办 欠小额贷款公司的钱还不上怎么办 负债30万没工作怎么办 华为p9耗电太快怎么办 酷派手机反应慢怎么办 网上买手机被骗了怎么办 买手机贵了怎么办12315 在手机店被骗了怎么办