8.枚举_注解_异常处理
枚举_注解_异常处理
1.枚举
枚举:是一组常量的集合,可以理解为枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
实现方式:
1.自定义类实现枚举
2.使用enum关键字实现枚举
自定义枚举案例:
1 |
|
enum关键字实现枚举案例:
1 |
|
注意事项:
1.枚举对象必须放在枚举类的行首
1.1enum枚举常用方法
说明:使用关键字enum时,会隐式继承Enum类这样我们就可以使用Enum类的相关方法。
enum常用方法的使用:
1.toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息
2.name:返回当前对象名(常量名),子类中不能重写
3.ordinal:返回当前对象的位置号,默认从0开始
4.values:返回当前枚举类的所有常量
5.valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常
6.compareTo:比较两个枚举常量,比较的就是编号!!
举例:
1 |
|
细节:
- 使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum
- 枚举类和普通类一样,可以实现接口
语法:1
2
3enum 类名 implements 接口1,接口2{
}2.注解
2.1Override注解
解释:使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素
三个基本的Annotation:
1.@Override:限定某个方法,是重写父类方法,该注解只能用于方法
2.@Deprecated:用于表示某个程序元素(类,方法等)已过时
3.@SuppressWarnings:抑制编译器警告3.异常处理
例题:概念:java将程序执行中发生的不正常情况称为”异常”;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class Exception01{
public static void main(String[]args){
int num1 = 10;
int num2 = 0;
//int res = num1/num2;
//1.当程序执行到两数相除时,程序会报错因为被除数为0,而下面的输出语句不会被执行
//2.JAVA设计者提供了一个叫异常处理机制来解决该问题
//3.如果程序员,认为一段代码可能出现异常/问题,可以使用try-catch异常处理机制来解决,从而保证程序的健壮性。
//4.如果进行异常处理,那么即使出现了异常,程序可以继续执行
try{
int res = num1/num2;
} catch (Exceptopn e){
System.out.println(e.getMessage());
}
System.out.println("程序继续运行");
}
}
执行过程中所发生的异常时间可分为两类:
1.Error(错误):JAVA虚拟机无法解决的严重问题,比如栈溢出,Error是严重错误,程序会崩溃
2.Exception:其他因变成错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理比如:空指针访问,试图读取不存在的文件,网络中断等等,Exception分为两大类:运行时异常[程序运行时,发生的异常]和编译时异常[编程时,编译器检查出的异常].
了解异常体系图
小结:
1.异常分为两大类,运行时的异常和编译时的异常
2.运行时异常,编译器不要求强制处置的异常,一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。
3.对于运行时异常,可以不做处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
4.编译时异常,是编译器要求必须处置的异常
五大运行时的异常:
1.NullPointerException:空指针异常
2.ArithmeticException:数学运算异常
3.ArraylndexOutOfBoundsException:数组下标越界异常
4.ClassCastException:类型转换异常
5.NumberFormatException:数字格式不正确异常[]
编译异常:
1.SQLException:操作数据库时,查询表可能发生异常
2.IOException:操作文件时,发生的异常
3.FileNotFoundException:当操作一个不存在的文件时,异常
4.ClassNotFoundException:加载类,而该类不存在时,发生异常
5.EOFException:操作文件,到文件末尾,发生异常
6.illegalArguementException:参数异常
异常处理:
定义:就是当异常发生时,对异常处理的方式
异常处理的方式:
1.try-catch-finally:程序员再代码中捕获发生的异常
2.throws:将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM
案例:Throws处理机制图:1
2
3
4
5
6
7
8
9
10
11
12try{
代码/可能有异常
}catch(Exception e){
//捕获到异常
//1.当异常发生时
//2.系统将异常封装成Exception对象e,传递给catch
//3.得到异常对象后,程序员,自己处理
//4.注意:如果没有发生异常catch块时不会执行的
}finally{
//1.不管try代码块是否有异常发生,始终要执行finally
//2.所以,通常将释放资源的代码,放在finally
}3.1try-catch异常处理
案例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32public class TryCatchDetail02{
public static void main(String[]args){
//1.如果发生异常,则异常发生后面的代码不会执行,直接进入到catch块
//2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch
//3.如果希望不管是否发生异常,都执行某段代码则可以使用finally语句块
try{
Person person = new Person();
person=null;
System.out.println(person.getName());
int n1 = 10;
int n2 = 0;
int res = n1/n2;
//1.如果try代码块有可能有多个异常
//2.可以使用多个catch分别捕获不同的异常,响应处理
//3.要求子类异常写在前面,父类异常写在后面
} catch (NullPointerException e){
System.out.println("空指针异常="+ e.getMessage());
} catch (ArithmeticException e){
System.out.println("算数异常" + e.getMessage());
} catch (Exception e){
System.out.println(e.getMessage());
} finally{
}
}
}
class Person{
private String name;
public String getName(){
return name;
}
}3.2throws异常
含义:
1.如果一个方法(中的语句执行时)可能生成某种异常,但不能确定如何处理这些异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
2.在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
例子:注意事项:1
2
3
4
5
6
7
8
9
10
11
12
13
14public class Throws01{
public static void main(String[]args){
}
public void f2() throws Exception,(其他异常) {
//创建了一个文件流对象
//1.这里的异常是一个FileNotFoundException编译异常
//2.使用前面讲过的try-catch-finally可以解决问题
//3.使用throws,抛出异常,让调用f1方法的调用者(方法)来处理
//4.throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
//5.throws 关键字后也可以是异常列表,即可抛出多个异常
FileInputStream fis = new FileInputStream("d://aa.txt");
}
}
1.对于编译异常,程序必须处理,比如try-catch或throws
2.对于运行时异常,程序中如果没有处理,默认就是throws的方式处理
3.子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常类型的子类型
4.在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必throws3.3自定义异常
定义:
当程序中出现了某些错误,但该错误信息没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息
步骤:
1.定义类:自定义异常类名(程序员自己写)继承Exception或RuntimeException
2.如果继承Exception则属于编译异常
3.如果继承RuntimeException,属于隐形异常(一般来说继承这个较多)3.4throw和throws的区别
意义 位置 后面跟的东西 throws 异常处理的一种方式 发方法声明处 异常类型 throw 手动生成异常对象的关键字 方法体中 异常对象
8.枚举_注解_异常处理
http://example.com/2022/11/03/java/8.枚举_注解/