多個工作流統一處理返回演算法

2021-09-30 09:21:54 字數 2267 閱讀 3141

避免重複使用if語句,或直接執行return語句,避免使用goto語句

//title: tackle the multple workflow together by once at the end

//author: aletenze

//time: 2011-12-10

//version: 1.0.0.2

/* 介面通用返回碼

-1 - 引數錯誤

-2 - 串列埠未開啟

-3 - 寫串列埠資料失敗

-4 - 讀串列埠資料失敗

-5 - 包檢驗出錯

-6 - 包錯

-7 - 韌體錯誤

-999 - 未知錯誤(異常)

*/#define success_return_value (0) //函式成功執行返回值

#define tl_success (0)

#define param_err (-1)

#define port_disopen_err (-2)

#define writedata_err (-3)

#define readdata_err (-4)

#define pkg_check_err (-5)

#define pkg_data_err (-6)

#define firmware_err (-7)

#define unknown_err (-999)

#define max_process_count (1<<31) //最大的整數, max(int)

#define break_while_value max_process_count //最大的process數目

int process1(); //工作1

int process2();// 工作2

int process3(); //工作3

int loginfo(lpctstr format,...); // 記錄日誌函式

int getret(int param1, int param2)

//---------------------開始執行工作流---------------------

while(temp_success_return && processcount=0)

"以內為可變內容,只要最終得到乙個nret值即可

// 為了保證,這個演算法的正常執行,避免死迴圈,請不要在"{}"

//內部更改 processcount的值,也不要執行「break」動作

nret=process1();

}temp_success_return=(success_return_value==nret);

processcount++;

break;

case 1:

"以內為可變內容,只要最終得到乙個nret值即可

// 為了保證,這個演算法的正常執行,避免死迴圈,請不要在"{}"

//內部更改 processcount的值,也不要執行「break」動作

nret=process2();

}temp_success_return=(success_return_value==nret);

processcount++;

break;

case 2:

"以內為可變內容,只要最終得到乙個nret值即可

// 為了保證,這個演算法的正常執行,避免死迴圈,請不要在"{}"

//內部更改 processcount的值,也不要執行「break」動作

nret=process3();

}temp_success_return=(success_return_value==nret);

processcount++;

break;

default:

processcount=break_while_value;

} }//---------------------結束工作流處理,進行結果判斷---------------------

switch(processcount)

case 1:

}break;

case 2:

}break;

case 3:

}break;

default:

logos<

} loginfo("%s\n",logos.str().c_str());

return nret;

}

統一處理異常

1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...