学习Java笔记记录Day12

一.异常(Exception)机制

1.什么是异常,即在运行过程中可能遇到的一些意想不到的错误,导致的程序出错,例如:断网了,文件丢失了,非法输入等。叫做异常,Exception

2.什么是错误:错误不是异常,而是脱离了程序员控制,基本是虚拟机异常,JVM错误,和前端错误。Error

3.错误和异常的区别:Error类对象基本是JVM生成并抛出,大多数的错误与代码无关。

4.Exception包括了RuntimeException(运行时的异常)和IOException(输入输出流异常)两个分支

5.其中RuntimeException是尤为重要的子类,包括了{ArrayIndexOutOfBoundsException(数组下标异常),NullPointException(空指针异常),ArithmeticException(算术异常),MissResourceException(丢失资源),ClassNotFoundException(找不到类)}等异常,都是程序员自身造成。

二.异常处理机制

处理异常使用到的关键字:try , catch , finally , throw , throws(throw与throws不一样!)

具体使用方法如下

        int a = 1;
        int b = 0;
        try {//try是对该代码块中的代码进行检查
            System.out.println(a/b);
        }catch (ArithmeticException E){//catch是用来捕获该代码块中的异常
            //catch(输入要捕获的异常类型)
            System.out.println("程序出错");//若捕获到异常则执行该代码,否则就跳过
        }finally {
            System.out.println("finally");//finally是最后一定会执行的,一般用来表示程序结束
        }

        /*
        Exception in thread "main" java.lang.ArithmeticException: / by zero
        此时,结果显示为算术异常,如何处理这个异常呢,我们就能使用到try catch 和finally
         */

try和catch一定是一起出现的,有try就一定有catch。

同时,一个try可以有多个catch

package Exception;

public class Test {
    public static void main(String[] args) {

        try {
            new Test().a();
                    /*
        此地用的是一个匿名类,即没有名字,直接new 类名().方法;可以直接调用该方法
        此时执行的结果为Exception in thread "main" java.lang.StackOverflowError
        可以看出,这里的结果是一个Error
        多次使用catch时,要注意的是要从小到大使用,不可从大到小,不然后面的代码都是冗余代码
        异常的大小排序为:Throwable包括了Exception和Error,所以Throwable是最大的
         */

        }catch (ArithmeticException e){//从小开始
            System.out.println("ArithmeticException");
        }catch (Exception e){
            System.out.println("Exception");
        }catch (Throwable t){
            System.out.println("Throwable");
        }//此时结果为Throwable


    }
    public void a(){
        b();
    }
    public void b(){
        a();
    }
}

try和catch这类方法可以使用快捷键调用

ctrl+alt+t

throw和throws是用来抛出异常的,不同的是,throw是在针对方法内的异常,而throws是针对方法的异常,当方法内的异常无法处理时,我们使用throws来迫使方法抛出这个异常

package Exception;

public class Test3 {
    public static void main(String[] args) {
        try {
            new Test3().test(1,0);
        } catch (ArithmeticException e) {
            System.out.println("程序出错了");
        }
    }
    public void test(int a , int b)throws ArithmeticException{
        if (b==0){
            throw new ArithmeticException();//throw是用来主动抛出异常的,即当条件成立,直接报ArithmethicException异常
        }
    }

}

try和catch的用处是:若程序中遇到异常,程序会直接停止,而使用try和catch,程序会继续运行下去

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值