Java-初识异常

1.异常

1.1 Throwable类:
  1. Throwable类是所有异常(Exception)和错误(Error)的超类。

  2. Throwable类有两个子类,分别是Exception和Error:
    Exception:程序运行过程中产生的异常,可以进行处理。
    Error:是JVM错误,而此时程序并没有执行,无法进行处理,只能尽量避免此类错误。

  3. Throwable类中的常用方法:
    Throwable():无参构造,存储的错误信息和异常为null。
    Throwable(String message):有参构造,存储的错误信息和异常为message。
    String getMessage():获取当前Throwable类对象中存储的错误或异常信息。
    String toString():返回当前异常或错误的简要描述。
    void printStakeTrace():展示错误或异常的前因后果。

1.2什么是异常?为什么要处理异常?
  1. 异常(Exception)是程序运行当中可能导致程序中断的一种指令
  2. 如果希望程序出现异常之后,程序依然可以正常完成的话,那么就需要处理异常了
1.3处理异常的格式:
try {
	//可能发生异常的语句
} catch(异常类型 对应异常类型的对象) {
	//发生对应异常后的异常处理操作
} finally {
	//finally代码块内的代码,不论是否出现异常,都会执行
}
1.4异常处理的流程
  1. 如果程序当中产生了异常,那么会自动由JVM根据异常类型,实例化一个对应异常类的对象
  2. 如果这个时候程序当中没有任何的异常处理操作,那么这个异常类的实例化对象将交给JVM进行默认的处理,而JVM默认的处理方式就是进行异常信息的打印,而后中断程序的执行
  3. 如果程序当中存在了异常处理机制,例如try-catch语句,那么将会由 try 语句捕捉产生的异常类对象
  4. 捕捉到了异常类对象之后,与try后的每一个catch语句进行匹配,如果匹配成功,则使用对应的catch进行处理,如果没有匹配成功,则会依次向后面的catch继续匹配,如果没有任何的catch匹配成功,则这个时候会再交给JVM进行默认处理
  5. 不管是否有异常,都会执行后面的finally语句,如果此时没有异常,执行完finally之后,会继续执行剩下的程序代码,但如果此时有异常,没有能够处理,也就是没有对应的catch匹配,也会先执行finally语句,但是执行完finally之后,会交给JVM进行默认处理,将异常信息输出,并且中断程序执行
1.5捕获异常的总结
  1. try代码块中从异常发生位置开始,代码块内之后的其它代码将不会再执行
  2. 代码块中可能有多个异常,可以使用多个catch代码块分门别类进行处理
  3. 异常捕获完成处理之后程序可以继续运行
1.6异常的抛出

throws关键字:

  1. throws关键字主要是在方法定义上使用的,表示的是此方法不对异常进行处理,交给被调用处处理
  2. 在用户层面调用throws关键字修饰的方法时,一定要使用异常处理操作进行异常的处理,这是强制性的处理,在主方法也可以使用throws关键字进行异常的抛出,但不同的是,这个时候表示的是将异常向上抛出,也就是交给JVM默认处理

throw关键字:

  1. throw关键字主要是在方法内使用,之前所有的异常都是由JVM自动进行实例化操作的,使用thorw关键字可以主动的抛出自己想要的异常类对象
1.7关于RuntimeException
  1. 在Java中明确规定,对于RuntimeException的异常类型可以有选择的来处理,如果没有处理,则交给JVM默认处理
  2. 常见的RuntimeException异常:
  • NumberFormatException
  • ClassCastException
  • NullPointException
  • ArithmeticException
  • ArraysIndexOutOfBoundsException

请解释Exception与RuntimeException的区别:

1.RuntimeException是Exception的子类
2. Exception定义的异常必须强制的进行处理,而RuntimeException定义的异常可以有选择性的处理,如果没有处理则交给JVM进行默认处理

你可能感兴趣的:(java)