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

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/softidea/p/4751096.html
Copyright © 2011-2022 走看看