JAVA迅猛式语法总结(十四-完结)

11. 异常

11.1 异常的定义

异常就是在程序运行过程中的一些预期之外的情况,需要说明一下,同时进行合理的处理,保证我们程序正常运行或者不至于崩掉,这些异常包括文件无法找到、网络连接失败等等。

一般有以下几种情况:

检查性异常。最具代表的就是用户操作错误引起的异常,这种异常时无法被发现的。

运行时异常。该异常时可以被避免的,运行的时候可以在编译的时候被忽略。

错误ERROR。错误就不是异常了,而是一种脱离了程序员控制的异常,常常不能在编译的时候检查出来。例如栈溢出。

在java中把异常当作对象来处理,定义了一个超类java.lang.Throwable作为所有异常和错误的类。

Error类时虚拟机生成抛出的,大多数与编写程序无关,一般这些错误发生java虚拟机会选择线程终止。还有是法神在虚拟机将要执行应用时发生的,例如定义错误、链接错误等等。

Exception类分支有很多:

  1. ArrayIndexOutOfBoundsException,数组下标越界
  2. NullPointerException,空指针异常
  3. ArithmeticException,算数异常
  4. MissingResourceException,丢失资源
  5. ClassNotFoundException,找不到类

这些异常都是不检查异常,既是只有在运行的时候才会出现的异常,程序中可以选择捕获或者不处理。

Error一般是灾难性的致命错误,程序无法控制处理,进而选择终止,Exception一般是可以被程序处理的,并且程序回尽可能处理这些异常。

11.2 异常的捕获

异常处理有以下五个关键字:

try、catch、finally、throw、throws

package com.cabin.test05;

public class A {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        try {
            System.out.println(a/b);
        }catch (ArithmeticException e){//异常的类型
            e.printStackTrace();//打印错误的信息
            System.out.println("除数不能为0");
        }finally {
            System.out.println("finally");
        }
    }
}

这是捕获异常的基本方法,try和catch是必须有的,finally看情况添加。

catch可以和if一样添加多层,注意最下面一层捕获的异常时异常类最大的,既是依次增加异常类的级别。

11.3 异常的抛出

7654321·=中,主动抛出异常。

package com.cabin.test05;

public class A {
    public static void main(String[] args) {
        new A().a(1,0);
    }
    public void a(int a ,int b) throws ArithmeticException{
        if(b==0) {
            throw new ArithmeticException();
        }
        System.out.println(a/b);
    }
}

方法内抛出异常时throw,方法上抛出异常是throws,当方法内无法处理异常可以往上抛出,既在方法上抛出异常。

11.4 自定义异常

想要自己定义异常没只需要继承Exception类就行。

一般是以下几个步骤:

  1. 创建自定义异常。
  2. 在方法中用throw抛出异常。
  3. 如果是在当前抛出异常的方法中处理异常,就用try-catch捕获处理,否则就在声明方法处通过throws关键字抛出给方法调用者处理。
  4. 或者直接在出现异常的地方直接捕获处理。
package com.cabin.test05;

public class MyException extends Exception{
    private int detail;

    public MyException(int a) {
        this.detail = a;
    }

    @Override
    public String toString() {
        return "MyException{" +
                "数字太大" + detail +
                '}';
    }
}



package com.cabin.test05;

public  class Test {
    public void test(int a) throws MyException {
        if (a>10){
            throw new MyException(a);
        }
        System.out.println("ok");
    }
    public static void main(String[] args) {
        try{
            new Test().test(12);
        }catch(MyException e){
            System.out.println("MyException "+e);
        }
    }
}

以上就是一种简单的自定义异常,自由度很高,Test类里面的方法可以按自己的需求来修改。

基本到这,我们的java的基础语法就结束了。感谢你的阅读和学习!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值