编译异常和运行期异常

java异常

在这里插入图片描述

小结

RuntimeException和Exception有什么区别:

Exception属于编译时异常,编译器在编译时会检测该异常是否异常的处理方案 ,如果没有处理方案,编译不能通过。

RuntimeException属于运行时异常,编译器不会检测该异常是否有异常的处理方案,不需要声明。

说明:在Exception的所有子类异常中,只有RuntimeException不是编译异常,是运行时异常,其他子类都是编译异常。

编译时期异常

一定要用try catch或者tthrows处理,否则程序报错,无法生成字节码文件

checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
在这里插入图片描述

2种解决方式

throws(不推荐,没法运行后续代码)
package cn.itcast.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TryTest {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;

            date = sdf.parse("1999-0909");

        System.out.println("date = " + date);
        System.out.println("后续代码");
    }
}

在这里插入图片描述

try catch(推荐,可以运行后续代码)
package cn.itcast.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TryTest {
    public static void main(String[] args)  {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;

        try {
            date = sdf.parse("1999-0909");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        System.out.println("date = " + date);
        System.out.println("后续代码");
    }
}

在这里插入图片描述

运行时期异常

不一定要用try catch或者throws处理,因为程序不报错

runtime异常。在运行时期,检查异常.在编译时期,运行异常不会让编译器检测(不报错)。(如数学异常)
在这里插入图片描述

运行时期时异常:ArrayIndexOutOfBoundsException,NullPointerException

运行时期异常(RuntimeException)在方法上不用throws抛出

当 throw new RuntimeException的时候,不用throws

package cn.itcast.test;

public class TryTest {
    public static void main(String[] args) {
        //创建一个数组
        int[] arr = {2,4,52,2};
        //根据索引找对应的元素
        int index = 4;
        int element = getElement(arr, index);

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

    }
    /*
     * 根据 索引找到数组中对应的元素
     */
    public static int getElement(int[] arr,int index){
        //判断  索引是否越界
        if(index<0 || index>arr.length-1){
             /*
             判断条件如果满足,当执行完throw抛出异常对象后,方法已经无法继续运算。
             这时就会结束当前方法的执行,并将异常告知给调用者。这时就需要通过异常来解决。
              */
            throw new ArrayIndexOutOfBoundsException("哥们,角标越界了~~~");
        }
        int element = arr[index];
        return element;
    }
}


在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值