Java异常
【摘要】Java异常~
前言
hi~
异常定义
java异常[exception]定义:是一种“信号”传递机制
如:
1 | int i = ...; |
一段代码中,如果存在“有可能”出现异常的代码,而你的程序中又没有针对它做出“处理”,则一旦出现异常,程序就有可能会异常结束,从而达不到你的预期。
会有哪些异常?
java的异常可以分为:A. 运行时异常,也叫未检查异常; B. 非运行时异常,也叫已检查异常;
运行时异常,也叫未检查异常
所有直接或间接继承于RuntimeException
异常的类都叫未检查异常,有:NullPointerException
空指针异常ClassCastException
类型转换异常ArrayIndexOutofBoundsException
下标越界异常
…
以上这类异常都有一个共性:都是在JVM内部造成的,而不是由外部环境引起的。所以,这种异常可以说是由程序员编码粗心造成的。
解决方案是:希望程序员编码谨慎,比如:对象使用之前做非空判断,….
非运行时异常,也叫已检查异常
它们直接或间接继承于Exception
类,或者换句话说,只要不是RuntimeException
的子类,就是已检查异常。
如:IOException
,SqlException
,FileNotFoundException
,NetException
, …
以上这些异常也有一些共性,就是它们都是由JVM外部环境造成的,所以,对于此类异常,光编码谨慎是不够的,还有做出处理。
注:在java中,对异常还有更高层次的抽象,叫可抛出的,由
java.lang.Throwable
来表示。
1 | java.lang.Throwable |
如何处理异常?
有如下两种处理方式A. 消极处理方式,B. 积极处理方式。
消极处理方式
利用 关键字 throws 把异常抛出。如:
1 | public void ma() throws InterruptedException { |
积极处理方式
利用 try catch finally 语句块来处理这个语句块有多种不同的变种。如:
1 | try { |
还有:
1 | try { |
注:不管try块中的代码是否出现了异常,finally块总会执行,除非在try块中执行了 System.exit(1) //退出JVM 进程
还有:
1 | try { |
自定义异常类
自定义异常类是一般是自定义已检查异常。只需要定义一个类继承 java.lang.Exception 类即可,并且重写父类的构造方法。
如:
1 | public class BalanceNotEnoughException extends Exception { |
#结束语
bye~