java基础day03-异常篇

第三章、异常处理

异常处理在程序运行过程中出现的错误Exception,异常被分成编译时异常运行时异常

1. 异常的分类

  • 编译时异常
    程序在编译过程中发生的异常,必须要进行处理,如果不处理,就会无法正常运行程序。
  • 运行时异常
    程序在运行时发生的异常,在编译环节没有报错,可以处理也可以不处理,运行时异常可以在编译时被忽略。
补充:

在异常这一章,存在一个概念:错误
错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽视。例如:当栈溢出时,一个错误就发生了,他们在编译时也检查不到。
无论是运行时异常,还是编译时异常,在最后都需要处理
在这里插入图片描述

自定义异常
为什么要自定义异常

​ 程序自己本身的异常类型已无法满足需要的时候,需要自定义异常来满足需求。

自定义异常的前提
  1. ​ 需要继承异常的父类或者直接子类

    • extends Exception
    • extends Throwable
    • extends RuntimeException
  2. ​ 需要写两个构造器

    • 需要注意的是:无参构造来调用有参构造
异常处理的三种方式
a) throw
public class Students  {
    public static void main(String[] args) {
        //语句块
        throw new RuntimeException("这是一个错误");
    }
}
b) throws
public class Students  {
    public static void main(String[] args) throws Exception {
        //语句块
    }
}
c) try…catch…finally
public class Students  {
    public static void main(String[] args) {
        //语句块
        try {
            //需要捕获异常的地方
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("这句话一定被执行!");
        }
    }
}

常见的异常类型

异常描述
ClassNotFoundException应用程序试图加载类时,找不到相应的类,抛出该异常。
CloneNotSupportedException当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
IllegalAccessException拒绝访问一个类的时候,抛出该异常。
InstantiationException当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
InterruptedException一个线程被另一个线程中断,抛出该异常。
NoSuchFieldException请求的变量不存在
NoSuchMethodException请求的方法不存在
NullPointerException空指针异常,调用了未经初始化的对象或者是不存在的对象
ArrayIndexOutOfBoundsException数组下标越界
ConcurrentModificationException并行修改异常,常在集合iteration遍历时操作remove操作发生
NumberFormatException数字格式化异常,在装箱与拆箱时调用valueOf(String s)时传入不对应的参数

1、常见的异常面试题

1.1 throw和throws的区别

答:
相同点: 都是异常处理的方式,都可以对异常进行处理
不同点:
1、位置:throws是在方法函数头,也就是方法的名字后面;throw是在方法体内部任意位置
2、运行:throws抛出的异常不一定会被执行到,而throw抛出的异常一定会被执行到

1.2 异常处理的几种方式

答:异常处理总共有三种方式:throw、throws、try…catch…finally(最常用)

1.3 常见的运行时异常有哪些,请列举

ArrayIndexOutOfBoundsException(数组下标越界异常)、StringIndexOutOfBoundsException(字符串下标越界异常)、CurrentmodificationException(线程操作异常)、NumberFormatException(数字转化异常)、NullPointerException(空指针异常)、ClassCastExcception(类型转化异常)、InterruptedException(中断异常)、SQLException(sql异常)……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@WAT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值