您的位置:首页 > 编程语言 > Java开发

java通过抛异常来返回提示信息

2015-08-22 21:08 585 查看
结论:
如果把通过抛异常的方式得到提示信息,可以使用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:\n" + 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相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: