zoukankan      html  css  js  c++  java
  • java通过抛异常来返回提示信息

    结论:
    如果把通过抛异常的方式得到提示信息,可以使用java.lang.Throwable中的构造函数:

        public Throwable(String message) {
            fillInStackTrace();
            detailMessage = message;
        }

        public Throwable(String message, Throwable cause) {
            fillInStackTrace();
            detailMessage = message;
            this.cause = cause;
        }


    原因及代码示例:
    1、通过java.lang.Throwable中的Constructs

        public Throwable(Throwable cause) {
            fillInStackTrace();
            detailMessage = (cause==null ? null : cause.toString());
            this.cause = cause;
        }

    在输出时获取的detailMessage是:

    exception.ProcessorException: java.lang.IllegalArgumentException: Failt to process

    Exception信息的输出:

    exception.ProcessorException: exception.ProcessorException: java.lang.IllegalArgumentException: Failt to process

    code:

    package exception;
    
    /*2015-8-22*/
    public class ExceptionChain {
        public static void main(String[] args) {
            Business business = new Business();
            try {
                business.doBusiness();
            } catch (ProcessorException e) {
                System.out.println(e.getMessage());
                System.out.println("e:
    " + e);
            }
    
        }
    
    }
    
    class Business {
    
        public void doBusiness() throws ProcessorException {
    
            try {
                process1();
            } catch (Exception e) {
                throw new ProcessorException(e);
                // throw new ProcessorException(e.getMessage(), e);
                // throw new ProcessorException(e.getMessage());
            }
    
        }
    
        private void process1() throws ProcessorException {
            try {
                process2();
            } catch (Exception e) {
                // throw new ProcessorException(e.getMessage(), e);
                // throw new ProcessorException(e.getMessage());
                throw new ProcessorException(e);
            }
    
        }
    
        private void process2() {
            throw new IllegalArgumentException("Failt to process");
        }
    
    }
    
    class ProcessorException extends Exception {
    
        private static final long serialVersionUID = -4270191862690602942L;
    
        public ProcessorException(Throwable cause) {
            super(cause);
        }
    
        public ProcessorException(String message) {
            super(message);
        }
    
        public ProcessorException(String message, Throwable cause) {
            super(message, cause);
        }
    
    }



    2、通过java.lang.Throwable中的Constructs

        public Throwable(String message) {
            fillInStackTrace();
            detailMessage = message;
        }
        /**
         * Fills in the execution stack trace. This method records within this
         * <code>Throwable</code> object information about the current state of
         * the stack frames for the current thread.
         *
         * @return  a reference to this <code>Throwable</code> instance.
         * @see     java.lang.Throwable#printStackTrace()
         */
        public synchronized native Throwable fillInStackTrace();

    在输出时获取的detailMessage是:

    Failt to process

     Exception信息的输出:

    exception.ProcessorException: Failt to process

    code:
    把上面示例代码中throw new ProcessorException(e.getMessage());注释去掉,把 // throw new ProcessorException(e);注释

    3、通过java.lang.Throwable中的Constructs:

        public Throwable(String message, Throwable cause) {
            fillInStackTrace();
            detailMessage = message;
            this.cause = cause;
        }

    在输出时获取的detailMessage是:

    Failt to process
    

    Exception信息的输出:

    exception.ProcessorException: Failt to process

    code:
    操作方式与2相同 

  • 相关阅读:
    JQuery Ajax实例总结
    【水】HDU 2099——整除的尾数
    hdu 1540 Tunnel Warfare(线段树区间统计)
    python学习教程(九)sqlalchemy框架的modern映射
    Maven 实现Struts2注解配置步骤详解
    消息机4
    hdu4708
    【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1)
    poj1860 解题报告
    机器学习理论与实战(十六)概率图模型04
  • 原文地址:https://www.cnblogs.com/softidea/p/4751096.html
Copyright © 2011-2022 走看看