小伙的java之旅——异常

在java中万物都是类,包括错误本身也会被包装成一个对象扔出去。

常见异常
1,ArithmeticException:除数为0;

解决方法:

    Scanner s = new Scanner(System.in);
    int b = s.nextInt();
    if(b != 0){
        int a = 10 / b;
        System.out.print(a);
    }else{
        System.out.print("除数不能为0");
    }

2,NullPointerException:当程序访问一个空对象的成员变量或方法,访问一个空数组的成员时会发生空指针异常。

解决方法:

People p = new People();
    if(p!=null){
        System.out.print(p.age);
    }

3,ClassCastException:类型转换错误。

解决方法:

Object obj = new Object() ;
    if(obj instanceof People){
        People p = (People)obj;
    }else {
        System.out.print("类型不符合");
    }

4,ArrayIndexOutOfBoundsException:访问的元素超过数组的长度。

解决方法:

int[] a = {1,2,3};
    int i = 4;
    if(i < a.length-1){
        System.out.println(a[i]);
    }else {
        System.out.println("超出数组范围");
    }

5,NumberFormatException:一般是字符串转化为数字时出错。

解决方法:前提,字符串里面只有数字。

String str = "123";
    Double d = Double.valueOf(str);
    double d1 = Double.parseDouble(str);
    Integer i = new Integer(str);
    int i1 = Integer.parseInt(str);

其中d,d1,i,i1每一种都可以解决,实际应用中选择一种适合的方法即可。

异常的执行顺序

在异常中先执行try/catch,然后执行finally,最后执行return。

catch:如果异常类之间有继承关系,在顺序安排上注意,越是顶层的类,越放在下面。或者,直接把多余的catch去掉。

finally:有些语句,不管是否发生异常,都必须执行,那么就可以把这样的语句放到finally语句块中。
注意:finally里面一般不要加return

异常的处理形式

1,try/catch
2,throws:声明一个或多个异常,谁调用它谁处理。(抛出异常)
3,throw:手动抛出。(异常也是对象,也可以new。)

    throw new NullPointerException("自己抛出去");

方法重写中声明异常原则
子类声明的异常范围不能超过父类声明的范围。

1,父类没有声明异常,子类也不能声明。
2,不可抛出原有方法抛出异常类的父类或上层类。

使用异常机制建议:

1,要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低。
2,处理异常不可以都代替简单测试——只在异常情况下使用异常机制。
3,不要进行小颗粒的异常处理——应该将整个任务包装在一个try语句块中。
4,异常往往在高层处理。(底层抛出,高层处理)。(高层:程序越往后执行,层次越高。)
5,main方法中一般不要抛异常。(最高层)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值