zoukankan      html  css  js  c++  java
  • 代码质量控制之异常控制

    首先来看异常的根节点

    Throwable是所有异常的根,java.lang.Throwable
      Error是错误,java.lang.Error
      Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.这种异常会导致JVM中断,必须人为处理
        java虚拟机中发生的,不需要程序猿try-catch或者抛出
        StackOutFlowError(栈溢出)和OutOfMemoryError(堆溢出),都属于Error,中间层是VirtualMachineError
        Exception是异常,java.lang.Exception 继承 Throwable
          IOException(必须捕获异常)
            FileNotFoundException
            EOFException
          RuntimeException(可捕获异常)
            NullPointerException
            ClassNotFoundException
            ...

    自定异常

    public class TraceException extends RuntimeException{
    
        private ExceptionEnums exceptionEnums;
    
        public TraceException(ExceptionEnums exceptionEnums) {
            super(exceptionEnums.getMessage());
            this.exceptionEnums = exceptionEnums;
        }
    
        public static String getTraceInfo(Throwable t) {
            StringWriter stringWriter= new StringWriter();
            PrintWriter writer= new PrintWriter(stringWriter);
            t.printStackTrace(writer);
            StringBuffer buffer= stringWriter.getBuffer();
            String[] str = buffer.toString().split("\r\n\t");
            buffer = new StringBuffer();
            buffer.append("exception:").append(str[0]).append("	detail:").append(str[1]);
            writer.close();
            return buffer.toString();
        }
    
    }

    自定义返回信息

    public enum  ExceptionEnums {
    
        COMMON_EXP("5000", "系统异常"),
    
        NOT_FOUND_DATA_EXP("1001", "未找到数据")
        ;
    
        private String code;
        private String message;
    
        ExceptionEnums(String code, String message) {
            this.code = code;
            this.message = message;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }
    

      

    运行查看

    public class ClientExcetion {
    
    
        public static void main(String[] args) {
            try {
                getData();
            }catch (TraceException e){
                System.out.println(e.getMessage());
            }
        }
    
        public static void getData() {
            try {
                String[] a = {};
                String c = a[3];
                System.out.println(c);
            }catch (Exception e){
                System.out.println(TraceException.getTraceInfo(e));
                throw new TraceException(ExceptionEnums.COMMON_EXP);
            }
        }
    
    }
    

      

    Unkonw Unkonw(你不知道一样东西,你也会不知道自己不知道这样东西)
  • 相关阅读:
    进程间通讯----消息队列和共享内存方式的实现
    初探 Yii2 的测试模式 index-test.php
    nginx缓存功能的设置
    php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式
    workerman如何写mysql连接池
    Varnish 一般是放在 Nginx 前面还是后面的?
    关于PATH_INFO
    Java8 Lambda表达式
    synchronized的一些记录
    类和实例
  • 原文地址:https://www.cnblogs.com/2014-1130/p/11427074.html
Copyright © 2011-2022 走看看