想达到的目标:在Test1主类中,调用Test2.getTest2, 如果报错,将报错信息输出sendResponse("", "错误日志", "0001");
相关类:Test1.java、Test2.java、Test3.java
Test1.java
public static void main(String[] args) throws Exception {
Test1 t =new Test1();
t.run();
}
public void run(){
Test2 t = new Test2();
t.getTest2();
try {
if (1 != t.getTest2()) { //返回为1成功,0失败
System.out.println("Test1 调用 getTest2失败!");
sendResponse("", "错误日志", "0001");
return;
}
} catch (Exception e) {
try {
sendResponse("", e.getMessage(), "0001");
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
private void sendResponse(String out, String receivedMessage, String flag)throws IOException{
System.out.println("Test1记录错误日志:"+receivedMessage);
}Test2.java
public int getTest2() {
Test3 t = new Test3();
try{
t.getTest3();
}catch(Exception e){
System.out.println("getTest2:"+e.getMessage());
e.printStackTrace();
return 0;
}
return 1;
}
Test3.java
public void getTest3() {
if (1 == 1){
throw new RuntimeException("人工报错!");
}
if (2 == 2) {
try {
throw new Exception("没有操作员【111 】 的上下文对象.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关类:Test1.java、Test2.java、Test3.java
Test1.java
public static void main(String[] args) throws Exception {
Test1 t =new Test1();
t.run();
}
public void run(){
Test2 t = new Test2();
t.getTest2();
try {
if (1 != t.getTest2()) { //返回为1成功,0失败
System.out.println("Test1 调用 getTest2失败!");
sendResponse("", "错误日志", "0001");
return;
}
} catch (Exception e) {
try {
sendResponse("", e.getMessage(), "0001");
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
private void sendResponse(String out, String receivedMessage, String flag)throws IOException{
System.out.println("Test1记录错误日志:"+receivedMessage);
}Test2.java
public int getTest2() {
Test3 t = new Test3();
try{
t.getTest3();
}catch(Exception e){
System.out.println("getTest2:"+e.getMessage());
e.printStackTrace();
return 0;
}
return 1;
}
Test3.java
public void getTest3() {
if (1 == 1){
throw new RuntimeException("人工报错!");
}
if (2 == 2) {
try {
throw new Exception("没有操作员【111 】 的上下文对象.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
解决方案 »
- JAVA新手
- 关于java编写的视频播放器问题
- java.lang.NullPointerException
- 判断 VOID 是否执行
- 死循环问题
- 一个static的成员方法是否不能再在其内部定义一个static的内部类?
- java1.6update13和matlab2009a进行混合编程时,jvm出现了问题,向各人高人求教一二
- JTable怎么自动随窗口改变大小
- 如何在同一台机器中测试java程序与oracle的连接???
- study_body 继续讲进,HOHO,就一分!
- 求解决方法!Syntax error on token "=", @ expected after this token
- 求大佬指点!!JDK11.0.2版本,Win10系统,命令提示符运行java文件显示找不到或无法加载主类
public static void main(String[] args) {
Test1 t = new Test1();
t.run();
} public void run() {
try {
Test2 t = new Test2();
t.getTest2();
} catch (Exception e) {
System.out.println("Test1.run error:" + e.getMessage());
}
}
}class Test2 {
public int getTest2() throws Exception { throw new Exception("调用 Test2.getTest2 错误!"); }
}
Handler.java
try{
service = new DCIServiceFactory();
int res = service.getServiceInstance(receivedMessage).service();
if (res != ConstantHelper.Response.RESPONSE_SUCCESS) {
System.out.println("res:"+res);
sendResponse(out, receivedMessage, "0001");
return;
}
}catch (IOException e) {
try {
sendResponse(out, e.getMessage()+"||"+receivedMessage, "0001");
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} catch (Exception e) {
try {
sendResponse(out, e.getMessage()+"||"+receivedMessage, "0001");
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
finally {
try {
if (socket != null)
socket.close();
} catch (IOException e) {
logger.error("关闭socket连接失败.", e);
e.printStackTrace();
}
}
BillExpiryPayoutService.java
public int service() {
logger.info("start process bill payout wait task.");
mpo=mp.parse(receivedMessage, null);
DAOHelper du = new DAOHelper();
List list = getWFContextVarible(mpo);
try {
du.generateWaitTask(ConstantHelper.FlowDefine.FLOW_BILL_EXPIRY_PAYOUT, mpo.getStringValue("OPERID"), list);
} catch (Exception e) {
logger.error("生成待办任务失败:" + e.getMessage());
e.printStackTrace();
return ConstantHelper.Response.RESPONSE_FAIL;
}
int rtn1 = du.addBussinessReg(mpo.getStringValue("KEHUJM"), mpo.getStringValue("JIOYRQ"), mpo.getStringValue("JIOYSJ"),
ConstantHelper.TranCode.ACCEPTANCE_BATCH_DICCOUNT, "receive", mpo.getStringValue("SHPJBH"), "承兑批量记账");
if (rtn1 != ConstantHelper.Response.RESPONSE_SUCCESS)
{
logger.error("插入交易登记表时失败" );
return ConstantHelper.Response.RESPONSE_FAIL;
}
logger.info("服务正常结束");
logger.info("process acceptance account wait task success.");
return ConstantHelper.Response.RESPONSE_SUCCESS;
}
出错。会捕获执行,返回0,失败。
logger.error("生成待办任务失败:" + e.getMessage());
e.printStackTrace();
return ConstantHelper.Response.RESPONSE_FAIL;
在Handler.java ,返回失败0后,要写日志,这样错误日志就得不到了。
int res = service.getServiceInstance(receivedMessage).service();
if (res != ConstantHelper.Response.RESPONSE_SUCCESS) {
System.out.println("res:"+res);
sendResponse(out, receivedMessage, "0001");
return;
}
本身这个代码状态只封装了一个int,如果真想拿到错误信息,自己封装一个结果类,然后入库。