
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:单个元素
【泛型的优点】在编译阶段检查设置的类型值是否是指定类型,若不一致,编译报错,且取出值时,无需强转
【在泛型对象时,只能使用类】
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)