Java异常处理学习笔记

Java异常处理

一、概述

  • 编写代码过程中难免会出现一些问题,例如客户端的输入格式、网络是否流畅等。此时程序员则需要考虑处理异常,Java语言中发生的不正常情况称为"异常"(开发过程中的语法错误或逻辑错误不是异常)

  • Java程序在执行过程中发生的异常事件可分为两类:

    • Error:Java虚拟机无法解决的严重问题。如JVM系统内部错误、资源耗尽等严重情况。例如StackOverflowError和OOM
    • Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针异常、读取不存在的文件、网络连接中断、数组角标越界……

二、体系结构

Java异常处理学习笔记_第1张图片

三、异常处理

3.1 try-catch-finally

    try{
        //可能出现的异常
    }catch (异常类型){
        //处理异常的方式1
    }catch (异常类型){
        //处理异常的方式2
    }
	……
	 finally {
        //一定会执行的代码
    }
  • finally是可选的

  • 使用try将可能出现异常的代码包装起来

  • try中的异常对象匹配到某一个catch时,就进入catch中进行异常处理。一旦处理完成,就跳出当前的try-catch结构(没有写finally),继续执行后面的代码逻辑

  • catch中的异常类型,如果没有子父类关系,则声明的位置没有关系。如果满足子父类关系,则要求子类一定声明在父类的上面,否则会报错

  • 常用的异常处理方式:String getMessage(),printStackTrace()

  • 使用try-catch-finally处理编译器异常时,程序在处理异常时编译期不会出现错误,但是运行时仍可能报错

  • finally:finally中会包含一定会执行的代码

  • 在return执行之前会先执行finally结构中的业务逻辑

  • try-catch-finally结构可以相互嵌套

3.2 throws

  • throws+异常类型
  • 当出现异常时,产生异常处会生成一个异常类的对象,此对象满足throws后异常类型时,就会抛出,异常代码后续的代码就不会被执行
  • throws的方式会将异常抛给方法的调用者
  • 如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws,意味着如果子类重写的方法中有异常,必须使用try-catch-finally方式去处理

3.3 手动抛出异常

throw new RuntimeException();

3.4 自定义异常

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

你可能感兴趣的:(Java学习)