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

  • 相关阅读:
    深入理解JavaScript定时器(续)
    也谈前端基础设施建设
    Reporting Services在指定计算机上找不到报表服务器
    优化tempdb提高SQL Server的性能
    SQL 代理服务未运行。此操作需要 SQL 代理服务。 (rsSchedulerNotResponding) 获取联机帮助
    报表服务器上出现内部错误。有关详细信息,请参阅错误日志。 (rsInternalError) 获取联机帮助.找不到存储过程 'GetOneConfigurationInfo'。
    表中包含有外键时无法进行导入数据,
    SQLSTATE ODBC API(驱动程序管理器)错误
    数据库只能用机器名连接,不能用ip地址连接
    请教:不能访问通过IP访问,却可以通过机器名访问
  • 原文地址:https://www.cnblogs.com/softidea/p/4751096.html
Copyright © 2011-2022 走看看