Java中异常处理

来源:互联网 发布:苏珊大妈 知乎 编辑:程序博客网 时间:2024/04/30 07:43

Java中异常处理

众所周知,每个人都不可能保证自己写的程序没有错,如果程序中可能发生错误就要进行异常处理。下面我将通过简短的文字叙述和代码来说明是什么是异常处理和怎么样进行异常处理。
1.异常处理
程序中出现异常的情况很多,可能是software问题也可能是hardware问题,在Java程序中,对异常的处理都是一样的,一般情况下通过try-catch语句来进行处理。基本形式为:

try{    //此处是可能出现异常的代码}catch{      //此处是发生异常的处理代码}finally{    //不管是否有异常,这个语句都要执行}

结构就是这样了,是不是一眼就看明白了,但是这距离熟练应用还有很长的路要走。
2.异常类
其实Java中定义了很多异常类,但是也不可能满足所有的情况,所以有的时候需要自去定义一个异常类。
自己定义异常类需要继承Exception类,他的基本格式为

class 类名 extends Exception{    //若干在发生异常时可能会被调用的语句。}

3.抛出异常
当一个程序发生异常时,如果自己不能够进行异常处理,就可以抛出异常给上一层,如果上一层也不能解决问题,就这样一直递归到main方法为止,如果还不能解决,就会终止运行,将异常显示出来。
Java中利用throws和throw语句抛出异常。但是二者有区别,throws是在方法声明中抛出异常,二throw是在方法体内使用抛出异常。具体请看下面一个例子:

public class DongXi{    public static void main(String args[]) throws 异常类的类名{        try{            //可能抛出异常的语句            throw new 异常类类名();        }        catach(异常类类名 e){            e.异常类中的方法();        }        finally{            //必须执行的语句;        }    }}

下面看一个综合性的例子:模拟向船上装载货物,如果货船超重,那么认为这是一个异常,将拒绝装载,无论是否发生异常,都要整点开船。
定义了一个异常类Dangers用来处理抛出异常后执行的语句。然后定义了一个货船类,描述了货船的属性。
并在这个类中的方法调用过程中,可能出现异常,因此在方法声明后加了throws语句。

package exception;class Dangers extends Exception {    final String messgess="警告:超重!!!";    public String danger(){        return messgess;    } }//自定义异常类,继承Exception类class CargoBoat{    int realmax;//当前装载量    int maxload;//最大装载量    public void setMaxContent(int c){        maxload=c;    }//设置最大装载量    public void loading(int m) throws Dangers{//此方法运行中可能产生异常        realmax=realmax+m;        if(realmax>maxload){            realmax=realmax-m;            throw new Dangers();        }//该语句执行可能会抛出异常,如果抛出异常就创建Dangers类        System.out.println("目前装载量是:"+realmax+"吨!");    }}//船只类public class dangerException{    public static void main(String args[]){        CargoBoat chuan=new CargoBoat();        chuan.setMaxContent(200);//设定船的最大承载量        try{            chuan.loading(30);//先装20t            chuan.loading(50);//再装50t            chuan.loading(80);//装80t            chuan.loading(90);//装90t看看,会抛出异常,这一句。        }//可能会发生异常        catch(Dangers e){            System.out.println(e.danger());//调用异常类中的方法,输出警告:超重!!!            System.out.println("无法再装了!");        }//如果发生异常的处理语句        finally{            System.out.println("滴……校园卡,开船~");        }    }}编程贵在先理论后实践,二者之间相辅相成。如果有错误,欢迎指正。
0 0