Java异常处理机制

399 篇文章 12 订阅
46 篇文章 2 订阅
package com.example.demo;

import org.junit.Test;

/**
 * @Description Java异常处理机制
 * @Auther gf.x
 * @Date 2020/4/6 13:51
 */
public class ExceptionTest {

    //1、异常的分类
    public static void main(String[] args) {
        /**
         * 那为什么会有这两种异常的分类(为什么UncheckedException异常不需要手动处理,而CheckedException异常需要手动处理):
         * 因为UncheckedException这种异常经常发生比较频繁,JRE会自动对这种异常做处理(自动new出相应的异常对象,自动进行捕获)
         */

        //这种就是 UncheckedException(没有检查) 异常:没有被编译器检查过
        int i = 10/0; //编译阶段不用手动处理,但是运行时会出现异常(所以这种异常也成为运行时异常)

        try {
            //这种就是 CheckedException(检查过的) 异常:被编译器检查过
            Thread.sleep(3000); //编译阶段就要手动处理的异常
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //2、NullPointerException空指针异常
    @Test
    public void test() {

        /**
         * java.lang.NullPointerException:空指针异常
         * 大部分情况下发生的空指针异常都是下面原因造成的:对象是null,调用了对象的方法或属性
         *
         * 如果一个地方发生了空指针异常;
         *      1. 那就看这个地方都有哪些对象
         *      2. 这些对象是否为null
         *      3. 若无法避免对象为null,那就添加判断防止空指针异常的发生
         */
        Computer computer = null;
        if (computer != null) {
            computer.start(); //对象是null,调用了对象的方法或属性
        }
    }

    class Computer {
        void start() {
            System.out.println("电脑启动了!");
        }
    }

    //3、ArithmeticException运算异常
    @Test
    public void test1() {
        int b = 0;
        if (b != 0) {
            int i = 10/b;
        } else {
            System.out.println("不能用0做除数!");
        }
    }

    //4、ClassCastException类型转换异常
    public void test2(Object obj) {
        if (obj instanceof Computer) {
            Computer computer = (Computer) obj;
        }
    }

    //5、NumberFormatException数字转换异常
    @Test
    public void test3() {
        String s = "1234badl"; //如果 s = "1234" 就不会出现异常

        //java.lang.NumberFormatException: For input string: "1234badl"
        Integer i = new Integer(s); //For input string: "1234badl" 是异常的描述
    }

    //6、ArrayIndexOutOfBoundsException数组索引越界异常
    //一般处理异常都是先做一些判断
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值