0

コードを作成しました。コードが理想的に行うことは次のとおりです。

  1. 関数 GetTaskStatus() を実行します。私のコードには他にもいくつかの同様の関数があります。
  2. いずれかの関数で例外が発生した場合、制御を ExcelRecorder() 関数に移動します。
  3. このように関数のいずれかで例外がキャッチされた場合、Excel シート内の特定の行の J セルに FAIL を記述し、同じ行の K セルに正確な例外エラー (たとえば、NullReferenceException が見つかりました) を書き込む必要があります。つまり、J セルが RESULT で、K セルが REMARKS です。私のExcelシートにはいくつかの行があります。
  4. どの関数でも例外が発生していない場合は、その行の J セルに PASS を書き込むだけです。
  5. 私のコードはそれを行うことができます。しかし、しかし、問題があります。例外が発生したかどうかに関係なく、私のコードは Excel のすべての行に FAIL と REMARKS を入力しています (ただし、一部の関数は例外を引き起こしません)。

コードのメイン スニペットを投稿しました。誰が親切に私が間違っているのか教えてもらえますか? 関数で例外が発生していない場合は、PASS を入力する必要があります。

コードは下に行く

public void GetTaskStatus()
        {
            try
            {
                Console.WriteLine("Invoking GetTaskStatus method");
                Console.WriteLine("------------------****-----------------");
                m_taskStatus = taskClient.GetTaskStatus(m_taskID);
                Console.WriteLine("Task status : " + m_taskStatus.taskStatus.ToString());
                Console.WriteLine("-----------------------------------");
            }
            catch (Exception ex)
            {
                MessageBox.Show("An exception has occured. Please check the Excel sheet for more info", "Exception Caught" + ex);
                ExcelRecorder(true, ex.Message);
            }
            finally
            {
                GC.Collect();
            }
        }


public void ExcelRecorder(bool isExceptionalData, string message)
        {
            MessageBox.Show("ExcelRecorder method reached when exception occurs");
            //Code for recording into excel should be written here
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/dsds.xlsx");
            Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Excel.Range xlRange = xlWorksheet.UsedRange;
            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count;
            int numSheets = xlWorkbook.Sheets.Count;
            for (int row = 2; row <= rowCount; row++)
            {
                if (isExceptionalData)
                {
                    ((Range)xlWorksheet.Cells[row, "J"]).Value2 = "FAIL";
                    ((Range)xlWorksheet.Cells[row, "K"]).Value2 = message;
                }
                else
                {
                    ((Range)xlWorksheet.Cells[row, "J"]).Value2 = "PASS";
                }
            }
            xlWorkbook.Save();
            xlWorkbook.Close(0,0,0);
            xlApp.Quit();
        }
4

1 に答える 1

0

isExceptionalDataそれは常に正しいように見えるので、このコードブロック

if (isExceptionalData)
{
    ((Range)xlWorksheet.Cells[row, "J"]).Value2 = "FAIL";
    ((Range)xlWorksheet.Cells[row, "K"]).Value2 = message;
}
else
                {
    ((Range)xlWorksheet.Cells[row, "J"]).Value2 = "PASS";
}

常に「FAIL」ブランチを下ります

これを試行に追加すると、例外が発生しない場合に応じて行が追加されます。

 ExcelRecorder(false, null);
于 2012-06-22T09:43:58.470 に答える