异常处理

2022-02-04  本文已影响0人  喏喏2021

1. 异常抛出

下面是我们最常用到的抛出异常的方式,

package test.basic.exception;

public class ThrowExceptionTest {
    public static void main(String[] args) {
        Object t = null;
        if(t==null){
            throw new NullPointerException();
        }
    }
}

当然通过源码可以看到,NullPointerException也有一个带参数的构造,且是一个运行时异常

public
class NullPointerException extends RuntimeException {
    private static final long serialVersionUID = 5162710183389028792L;

    /**
     * Constructs a {@code NullPointerException} with no detail message.
     */
    public NullPointerException() {
        super();
    }

    /**
     * Constructs a {@code NullPointerException} with the specified
     * detail message.
     *
     * @param   s   the detail message.
     */
    public NullPointerException(String s) {
        super(s);
    }
}

2. 异常捕获

一般异常捕获的代码如下,

try {
    Inet4Address.getLocalHost();
    Class.forName("abc");
} catch (UnknownHostException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch(Exception e){
    e.printStackTrace();
}

说明:

3. 自定义异常

java本身已经定义了许多的异常,当然也可以根据自身业务需要,自定义业务异常。

class MyException extends Exception {
        public MyException(){}
        public MyException(String msg){
            super(msg);
        }
        public String getMessage(){
            return "exception msg:" + super.getMessage();
        }
    }

可以看到,我们只要继承了已有的Exception异常类,就可以生成自定义的异常类,当然自定义需要的构造参数都可以。

4. 使用finally清理

finally语句,是不管异常是否发生,或是异常是否被捕获,都会去执行最终的finally语句
这里,有两个注意:
1)当遇到break或是continue时,也会执行finally语句
2)finally一般是用来释放某些资源,比如打开的文件,网络连接等

上一篇 下一篇

猜你喜欢

热点阅读