我在一段代码中无法正确控制流程。我有一个函数GetVoucherNumberAndApplyToDatabase(),它调用一个单独的函数doPatientEncounterCreate()。如果内部函数引发异常,我希望外部函数停止在此执行的操作,因为它取决于返回的返回值。
下面是一些代码,以使您更加清楚:
//outer function
private int GetVoucherNumberAndApplyToDatabase(int Mode)
{
int ProviderID = 0;
int PracticeMRNumber = 0;
int VoucherNumber = 0;
string EncounterD = DateTime.Now.ToString("MM\\/dd\\/yyyy");
try
{
EncounterCreateResults = doPatientEncounterCreate(practiceID, PracticeMRNumber, ProviderID, ddlVisitType.SelectedValue, EncounterD);
/*
if (EncounterCreateResults.ErrorMessage.Length > 0)
{
throw Exception;
}
*/
...
//fails bc doPatientEncounterCreate threw exception
ApplyVoucherNumberToBillingCharges(practiceID, ReasonCodeID);
}
catch (ReasonCodeException ex)
{
pnlError.Visible = true;
lblErrorMessage.Text = ex.Message;
}
catch (Exception ex)
{
pnlError.Visible = true;
lblErrorMessage.Text = "An error occurred attempting to call the API: " + ex.Message;
}
}
//inner function
public static EncounterResults doPatientEncounterCreate(int PracticeID, int PatientID
, int ProviderID, string ReasonCodeID, string EncounterD)
{
try
{
DataTable ReasonCodeDT = getSingleReasonCode(PracticeID, ReasonCodeID);
string strReasonCode = String.Empty;
string strReasonDescription = String.Empty;
string strDuration = String.Empty;
string strActive = String.Empty;
我采纳了此问题的第二个答案:从内部函数中的代码退出所有函数
但是,即使我已将ReasonCodeExceptioncatch块移至外部函数,但在运行代码时,内部函数doPatientEncounterCreate()的泛型异常仍被引发,然后代码在oter函数中继续进行,直到引发异常为止因为它缺少内部函数返回的值。
另外,由于内部函数不是void函数,因此我无法遵循上面问题的已接受答案的建议,我需要返回的值。
您能提供的任何帮助将不胜感激。
慕仙森
收到一只叮咚
相关分类