美文网首页
异常处理

异常处理

作者: 喏喏2021 | 来源:发表于2022-02-04 23:12 被阅读0次

    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();
    }
    

    说明:

    • 找到一个成功匹配的catch异常,匹配就会结束
    • 不会同时匹配多个异常,
    • 一般会保留一个最广泛的Exception留在最后,保证都可以匹配上
    • 将具体的、范围小的异常放在前面,范围大的、基类抽象的放在下面

    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一般是用来释放某些资源,比如打开的文件,网络连接等

    相关文章

      网友评论

          本文标题:异常处理

          本文链接:https://www.haomeiwen.com/subject/wwuskrtx.html