异常

23 篇文章 0 订阅

零异常

package cn.cast;

import java.util.TreeMap;

@SuppressWarnings({ "rawtypes", "unchecked" }) // 去除黄色提示
public class HelloWorld {
    public static void main(String[] args) {
        Demo d = new Demo();
        try {
            int x = d.div(10, 0);
            System.out.println(x);
        } catch (ArithmeticException e) {//ArithmeticException e = new ArithmeticException(" / by zero")
            System.out.println("除数为零了");
        }
    }
}

class Demo {
    public int div(int a,int b) {//a = 10,b = 0
        return a / b;           //除数不能为0
                                //除数为0后,创建一个异常对象new ArithmeticException(" / by zero")
    }
}

超出边界异常

package cn.cast;

@SuppressWarnings({ "rawtypes", "unchecked" }) // 去除黄色提示
public class HelloWorld {
    /**
     * @param args
     * 安卓都是try{}catch(Exception e){}客户端
     * EE都是从底层往上抛                   服务端
     */
    public static void main(String[] args) {
        demo1();
        int a = 10;
        int b = 0;
        int[] arr = {11,22,33};

        try {
            //System.out.println(a / b);
            System.out.println(arr[5]);

        } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {//1.7版本的异常处理,注意不能子父类同时放
            System.out.println("除数为零了");
        } catch (Exception e3) {
            System.out.println("出问题了");
        }

        System.out.println("over");
    }

    public static void demo1() {
        int a = 10;
        int b = 0;
        int[] arr = {11,22,33};

        try {
            //System.out.println(a / b);
            System.out.println(arr[5]);
            arr = null;
            System.out.println(arr[0]);
        } catch (ArithmeticException e) {
            System.out.println("除数为零了");
        } catch (ArrayIndexOutOfBoundsException  e) {
            System.out.println("出问题了");
        }

        System.out.println("over");
    }
}

class Demo {
    public int div(int a,int b) {//a = 10,b = 0
        return a / b;           //除数不能为0
                                //除数为0后,创建一个异常对象new ArithmeticException(" / by zero")
    }
}

获取异常信息

public static void main(String[] args) throws FileNotFoundException {
        try {
            System.out.println(1/0);        //new ArithmeticException("/ by zero");
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());         //获取异常信息
            System.out.println(e.toString());           //错误类名+异常信息
            e.printStackTrace();                        //错误类名+异常信息+错误位置(行号)jvm默认处理异常使用此方法
        }

    }

finnaly的用法

try {
            System.out.println(1/0);
        } catch (Exception e) {
            System.out.println("catch执行了吗");
            //System.exit(0);   //如果先退出虚拟机就不会执行finally了
            return;             //这里return之后还是会执行finnaly
        } finally {
            System.out.println("finally执行了吗");
        }

finnaly里面return影响

public static void main(String[] args) {
        System.out.println(getNum());
    }

    public static int getNum() { 
        int x = 10;
        try {
            System.out.println(10 / 0);
            return x;                       //try和catch里面都应该有return语句,如果try没有检测到问题
        } catch (Exception e) {             //不会跳转到catch里面去,那么需要try里面有返回
            x = 20;
            return x;
        }finally {
            x = 30;
            System.out.println("执行了吗");
            //return x;                     //finally可以写return语句,但是不要这么写,因为会将结果改变
        }                                   //将前面的返回值覆盖掉
    }   

自定义异常

package cn.itcast.bean;

public class AgeOutOfBoundsException extends Exception {
    public AgeOutOfBoundsException (){
        super();
    }

    public AgeOutOfBoundsException (String message){
        super(message);
    }
}

public void setAge(int age) throws AgeOutOfBoundsException  {
        if(age > 0 && age < 200) {
            this.age = age;
        }else {
            //System.out.println("年龄错误");
            //throw new Exception("年龄错误");
            throw new AgeOutOfBoundsException("年龄非法");
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值