• 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相同 

  • 相关阅读:
    高斯消元法
    DP:Making the Grade(POJ 3666)
    Heap:Sunscreen(POJ 3614)
    ShortestPath:Silver Cow Party(POJ 3268)
    ShortestPath:Wormholes(POJ 3259)
    ShortestPath:Six Degrees of Cowvin Bacon(POJ 2139)
    DP:Bridging Signals(POJ 1631)
    DP:Wooden Sticks(POJ 1065)
    Greedy:Protecting the Flowers(POJ 3262)
    Greedy:Stripes(POJ 1826)
  • 原文地址:https://www.cnblogs.com/softidea/p/4751096.html
Copyright © 2020-2023  润新知