Java非常 Exception类及其子类

C语言时用if…else…来支配特别,Java语言全数的不胜都得以用1个类来代表,不相同档次的百般对应差其余子类十分,各种相当都对应1个老大类的目的。

 Java卓殊处理通过多少个根本字try、catch、finally、throw、throws进行管理。基本历程是用try包住要监视的说话,即便在try内出现相当,则不行会被抛出,catch中捕获抛出的相当并做处理,finally一定会达成未尽事宜。

练习:

package com.swift;

public class Exception1
{
    public static void main(String args[]){
        System.out.println("=========计算开始=========");
        try{
            int i=Integer.parseInt(args[0]);
            int j=Integer.parseInt(args[1]);
            int temp=i/j;
            System.out.println("计算结果:"+ temp);
        }catch(ArithmeticException e){
            System.out.println("出现了数学异常 "+ e);
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("出现了数组异常 "+ e);
        }catch(NumberFormatException e){
            System.out.println("出现了格式异常 "+ e);
        }catch(Exception e){
            System.out.println("其他异常 "+e);
        }finally{
            System.out.println("不管是否有异常,我都执行。");
        }
        System.out.println("=========计算结束=========");
    }
}

throws标识此办法出万分但不处理,什么人调什么人处理。

package com.swift;

public class Exception3
{
    public static void main(String args[]) throws Exception{
        Operate o=new Operate();
        System.out.println("=============计算之前==============");

            int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
            System.out.println("计算结果"+temp);
        System.out.println("=============计算之后==========");
    }
}
class Operate
{
    public int div(int i,int j) throws Exception{
        int temp=i/j;
        return temp;
    }
}

万一main也throws了,格外抛给了JVM,其实您2个throws不写,JVM仍然会默默地处理着特别

在意:一旦方法throws,main必须有回应,否则编译然而。main继续抛相当于出分外之后的次第因噎废食(没有”=============统计之后==========”),那时可用catch捕获抛来的要命进行拍卖。

 

package com.swift;

public class Exception3
{
    public static void main(String args[]) throws Exception{
        Operate o=new Operate();
        System.out.println("=============计算之前==============");
        try {
            int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
            System.out.println("计算结果"+temp);
        }catch(Exception e){
            System.out.println("出现了什么异常情况 "+e); 
        }
        System.out.println("=============计算之后==========");
    }
}
class Operate
{
    public int div(int i,int j) throws Exception{
        int temp=i/j;
        return temp;
    }
}

C语言, 

13分被处理,统计前后不荒谬输出。

throw与throws不相同,throw抛出的不是老大类,而是对象,可以人工的靶子。

package com.swift;

public class Exception4 {
    public static void main(String args[]) {
        try {
            throw new Exception("抛着玩呢 "); // 抛出人造异常对象
        } catch (Exception e) { // 再捕捉这个对象
            System.out.println("你抛的是什么呢?"+e);
        }
    }

}

只要不想抛Exception类的对像,要抛本人的

package com.swift;

public class Exception5 {
    public static void main(String args[]) {
        try {
            throw new MyException("自定义异常。");
        } catch (Exception e) {
            System.out.println("这个异常是 " + e); // e.printStackTrace();
        }
    }
}
//通过继承实现自己的异常类
class MyException extends Exception {
    public MyException(String msg) {
        //把参数传给父类
        super(msg);
    }
}