lesson5:java异常机制总结

目录

  • 一.为什么需要异常
  • 二.异常的分类和继承关系
  • 三.异常的处理和自定义异常
    • 1.一般处理
    • 2.多重捕获
    • 3.带finally的异常处理
    • 4.访问异常信息
    • 5.throws throw关键字的使用
    • 6.自定义异常
    • 7.可能会遇到的面试总结

一.为什么需要异常

    异常机制是一门成熟语言的标准,异常机制可以使得程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅和更加健壮。

二.异常的分类和继承关系

    1.Java中的异常有两种,即编译时和运行时异常。编译时异常是在编译时就要被处理的异常,提醒程序员需要处理编译时就可能遇到的异常。而运行时异常则无需处理。
    2.常见异常继承关系:
lesson5:java异常机制总结_第1张图片
我们可以看到Error(错误)和Exception(异常)都继承自Throwable这个接口,Error一般与虚拟机相关,我们无法恢复或不可能捕获,当程序发生错误时,程序则发生奔溃中断。

三.异常的处理和自定义异常

    Java中的异常处理,主要是由5个关键字处理,即try catch finally throws throw;简单的讲一讲各个关键字的作用:try后面跟着{},{}里面的代码块是可能发生异常的代码,后面一般会跟着catch(异常类型){},也有可能有多个catch,finally一般是跟在catch后面的,如果有finally这个关键字,那finally这个关键字后面的代码块总是被执行,需要注意的是除了try块,catch finllay块都不是必须的,但至少有其中之一。throws 是在方法签名时声明该方法可能会抛出一个异常,throw后面则是跟着具体的异常对象;

1.一般处理

try{
     // 程序代码
}catch(ExceptionName e1){
    //Catch 块
}

2.多重捕获

try{
     // 程序代码
}catch(异常类型1 异常的变量名1){
     // 程序代码
}catch(异常类型2 异常的变量名2){
     // 程序代码
}catch(异常类型2 异常的变量名2){
     // 程序代码
}
有个点注意下:多重捕获是要么多个异常类型没有继承关系,如果有先捕获子类型,再捕获父类型。

3.带finally的异常处理

try{
     // 程序代码
}catch(异常类型1 异常的变量名1){
     // 程序代码
}catch(异常类型2 异常的变量名2){
     // 程序代码
}catch(异常类型2 异常的变量名2){
     // 程序代码
}fially{
    //一般是释放资源
}

4.访问异常信息

如果捕获到异常则在cath块中有几个常用的方法提供给我们:
    1.getMessage();返回异常的详细字符串;
    2.printStackTrace();将异常的跟踪栈信息输出到标准输出;
    3.printStackTrace(PrintStream S);将异常的跟踪栈信息输出到指定输出流中;
    4.printStackTrace(PrintStream S);返回该异常的跟踪栈信息。
try{
     // 程序代码
}catch(ExceptionName e1){
    //Catch 块
e1.printStackTrace();
}

5.throws throw关键字的使用

权限符 返回值 方法名() throws ExceptionName
{
     // Method implementation
     throw new ExceptionName ();
}
throws有几个点注意下:
     1只能在构造方法、方法中使用;
     2.谁调用谁处理;
     3.抛出的异常可能是多个,用,隔开。

6.自定义异常

所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

7.可能会遇到的面试总结

参考博客https://blog.csdn.net/android_seven/article/details/82499337

本文如果不正之处。欢迎大家批评指正。

你可能感兴趣的:(java,Java)