java基础学习05(java中的异常类)
1-java异常的分类
1.1-Throwable
Throwable类是java中的顶级异常类,其它所有异常都是直接或间接继承了Throwable类。所有异常都是可抛出的。
-
Exception(异常)
-
编译时异常(也叫 受检异常,受控异常)
Exception 除RuntimeException的其它直接子类,编译时异常是需要我们进行处理的
编译时异常,程序发生异常的的概率较高,java规定必须对异常进行处理,才允许编译通过
-
RuntimeException(运行时异常,也叫 未受检异常,非受控异常)
运行时异常,不需要进行处理
运行时异常,发生的概率低,可以不做处理
-
-
Error
java程序运行过程中发生错误,无法处理,只能退出。如:StackOverflowError
2-异常的处理(方法一)
-
使用 try {}catch(异常类型 变量名){} ,对异常进行捕捉
-
将可能产生异常的代码块放到try块里面
-
将可能产生的异常的类型放到catch 小括号中
-
如果不产生异常,不会执行catch的代码,如果产生异常,则try块异常之后的代码都不执行了,直接去执行catch代码
-
可一次捕获多个异常,直接在后面加catch
-
捕获异常都是在内部捕获
-
-
try{} catch(异常类型 变量名){}finally{}
- 可配合finally一起使用,finally代码块中的代码,不管有没有异常都会执行,所以可以把释放资源类的操作放到finally中执行
3-异常的处理(方法二)
- 使用throw 关键字,在类定义的时候抛出异常
- 使用了throw关键字,类的内部不再提示需要捕获异常,如果产生异常,都会抛给java虚拟机
- 在声明抛出异常时,不要直接声明最大的异常,可能会影响异常的排查
- 使用了throws关键字,抛出的异常对象,不应该使用捕捉异常的方式,应该直接往外抛出
4-定义自己的异常类
java中的异常通常是不够用的,因此往往需要根据实际场景自己定义异常类
-
步骤一:自定义一个类,继承sun公司写的异常类
-
步骤二:创建一个无参构造方法
-
步骤三:创建一个有参构造方法
-
步骤四:在需要使用异常的地方,抛出自定义的异常对象
//创建异常类,继承异常对象 public class MyException extends Exception{ //创建无参构造方法 public MyException(){ } //创建有参构造方法 public MyException(String message){ super(message); } } //使用异常类 public class TestMyException throw MyException{ public static void main(String[] args){ System.out.println("请输入长度4-8的内容"); String str = new Scanner(System.in).nextLine(); if(str.length()<4||str.length()<8){ //抛出异常 throws new MyException("输入长度小于4位或者大于8位"); } } }