黑马程序员 异常

——- android培训java培训、期待与您交流! ———-

1,异常概述

异常就是不正常的意思,指程序中出现的不正常情况。

2,异常情况的划分

Throwable:

Error(严重的):一般不对其进行编写针对性代码处理。

特点:是同Jvm抛出的严重性的问题。
通常出现重大问题如:运行的类不在在或者内存溢出等。
需修改程序。

Exceptoion(非严重的):用针对性的方式进行处理。

特点:需要处理,通常有两种方式:

(a)通过 try catch finally代码块

(b)通过throws在函数上声明

3,异常处理的格式:

try{
可能发生异常的代码;
}
catch(捕获异常类的对象 异常类引用变量){
处理代码;
}
finally{
一定要执行的语句;(通常用于关闭资源)
}

可以仅存在try和catch代码块或者try和finally代码块。

finally代码块特点:只在一种情况下不执行:System.exit(0)。

体现

public class IODemo {
    public static void main(String[] args)  {       
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fw = new FileWriter("d:\\en.txt");
            fr = new FileReader("c:\\en.txt");
            char [] ch = new char[1024];            
            int len = 0;
            while ((len = fr.read(ch) )!= -1) {             
                fw.write(ch,0,len);
                fw.flush();     
            }           
        } catch (Exception e) {
            System.out.println("失败");//处理异常
        }
        finally{
            if (fw!=null) 
                try {
                    fw.close(); //处理异常          
                } catch (Exception e2) {
                }
                if(fr!=null)
                try {
                    fr.close();     //finally代码块里面关闭资源          
                } catch (Exception e2) {
            }
        }
    }
}       

4,throw和throws的区别

(a)throws使用在函数上,并且后面跟的异常类,可以跟多个,用逗号隔开

(b)throw使用在函数内;后面跟的是异常对象;只能抛出一个异常对象名;表示抛出异常,由方法体内的语句处理

体现

class Demo{
    public static int method(int[] arr,int index){
        if(arr == null){
            throw new NullPointException("数组为空");
        }

        if(index>arr.length){
            throw new ArrayIndexOutOfBoundException("数组索引越界");
        }

        return arr[index];
    }
}

5,异常的注意事项

(a)当异常被捕捉了以后,处理好异常,下面的语句还会继续执行

(b)当函数中异常发生,代表这个函数就已经结束了

(c)异常不能同时发生

(d)功能中有几个异常,那么就对应的就有几个catch

6,处理异常的几条原则

(a)函数内容如果抛出需要检测的异常,那么函数上必须要声明; 否则必须在函数内用try catch捕捉,否则编译失败。

(b)如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。如果调用的是复写父类的函数抛出异常,那么调用者只能抛出父类同样的异常,或者父类异常的子集

(c)功能内容可以解决,用catch;解决不了,用throws把异常告诉调用者,由调用者解决 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值