认识异常与处理

认识异常与处理,第1张

1、什么是异常?
程序在运行中产生“错误”
2、常见异常
ArithmeticException(除零异常)
ArrayIndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ClassCastException(类型转换异常)
3、异常基本语法:

【try代码块中遇到异常剩余代码不会执行直接跳转到catch】

【注】在Java中,异常也是类,catch只能捕获相应的异常类型。

4、Exception类: 所有异常类的父类。
【注】不推荐写Exception,这样不知道异常产生的原因。

5、printStackTrace():
打印异常出现的位置以及原因

6、finally代码块:
①无论是否异常产生,最终会执行finally代码中的代码。
②资源的释放、方法的关闭都在其中

7、异常的处理流程


8、人为抛出异常

throws关键字: 用于方法声明,表示该方法可能产生的异常类型,但本方法中不处理异常,若异常产生就抛回给调用者。

throw关键字: 用于方法内部,表示认为产生异常对象并抛出。

【异常对象产生都是发生异常后JVM产生的,若需要人为产生异常对象,就是用throw关键字】


Java的异常体系

【即JDK内部异常的继承关系】

1、异常的分类:

①受查异常: -->必须在编译阶段进行显示进行异常处理
常见:IOException

②非受查异常: -->编译阶段可以不显示进行处理
(RuntimeException以及其子类、Error及其子类)
RuntimeException–>运行时异常,编译时不报错

2、显示处理两种方式
1、进行try…catch…捕获异常
2、调用者使用throws向上抛出异常

3、自定义异常
某些业务场景下出现错误需要自定义异常类
①异常需要显示处理,继承Exception类
②异常不需要显示处理,继承RuntimeException类

public class CustomException {
     static String name = "张三";
     static String num = "12345";

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String userName = scanner.nextLine();
        System.out.println("请输入密码:");
        String passWord = scanner.nextLine();
        if (!name.equals(userName)){
            throw new UserNameExceprion("用户名输出错误");
        }
        if (!num.equals(passWord)){
            throw new PassWordException("密码输入错误");
        }
    }
}

class UserNameExceprion extends RuntimeException {
    public UserNameExceprion(String msg) {
        super(msg);
    }
}

class PassWordException extends RuntimeException {
    public PassWordException(String msg) {
        super(msg);
    }
}
泛型

1、什么是泛型?
指的是在类定义时不明确类型,在使用时明确类型
2、泛型 *** 作符 < T > ,T称之为类型参数
T:表示任意类型
K:键值对,key值
V:value值
E:单个元素

【泛型的优点】在编译阶段检查设置的类型值是否是指定类型,若不一致,编译报错,且取出值时,无需强转
【在泛型对象时,只能使用类】

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/905909.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-15
下一篇2022-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存