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
publicThrowable(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:
packageexception;/*2015-8-22*/
public classExceptionChain {public static voidmain(String[] args) {
Business business= newBusiness();try{
business.doBusiness();
}catch(ProcessorException e) {
System.out.println(e.getMessage());
System.out.println("e:\n" +e);
}
}
}classBusiness {public void doBusiness() throwsProcessorException {try{
process1();
}catch(Exception e) {throw newProcessorException(e);//throw new ProcessorException(e.getMessage(), e);//throw new ProcessorException(e.getMessage());
}
}private void process1() throwsProcessorException {try{
process2();
}catch(Exception e) {//throw new ProcessorException(e.getMessage(), e);//throw new ProcessorException(e.getMessage());
throw newProcessorException(e);
}
}private voidprocess2() {throw new IllegalArgumentException("Failt to process");
}
}class ProcessorException extendsException {private static final long serialVersionUID = -4270191862690602942L;publicProcessorException(Throwable cause) {super(cause);
}publicProcessorException(String message) {super(message);
}publicProcessorException(String message, Throwable cause) {super(message, cause);
}
}
2、通過java.lang.Throwable中的Constructs
publicThrowable(String message) {
fillInStackTrace();
detailMessage=message;
}
/*** Fills in the execution stack trace. This method records within this
* Throwable object information about the current state of
* the stack frames for the current thread.
*
*@returna reference to this Throwable instance.
*@seejava.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:
publicThrowable(String message, Throwable cause) {
fillInStackTrace();
detailMessage=message;this.cause =cause;
}
在輸出時獲取的detailMessage是:
Failt to process
Exception信息的輸出:
exception.ProcessorException: Failt to process
code:
操作方式與2相同
總結
以上是生活随笔為你收集整理的java 抛出异常 返回值_java通过抛异常来返回提示信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java swing最小化_Java s
- 下一篇: java baseentity_如何在J