解析文件中的Net Core Catch语句和其他业务逻辑

时间:2018-09-22 22:17:46

标签: c# parsing asp.net-core error-handling try-catch

我正在编写一个简单的程序来解析文本文件并将其放入“通用列表”中。

示例文字:

var userId = calEvent.user_id;
$("#user_id").val(userId).change();

有时候,可能会出现错误,文件中的数据丢失

1,Joe,CA,58,2
2,Matt,TX,63,5

我写了一个Catch语句来处理错误。 最后,客户需要一个包含引起错误的行的文件。

我的软件原理问题是,在出现错误的情况下,应该将catch语句用于处理其他业务逻辑,还是仅将其用于引发异常? 然后,在此catch语句中,我将创建一个错误文件夹以及包含引起问题的数据的文件。这样合适吗 请参阅下面的Catch语句。

-

1,Joe,CA,58   // missing one number
2,Matt,TX,63,5

2 个答案:

答案 0 :(得分:2)

不,那是错误的。在您的catch{}块中,您应该在逻辑上进行日志记录,然后根据系统要求重新抛出异常(OR),从而可能重试相同的操作。但是,不建议进行其他操作(例如创建文件夹或文件),因为如果这些操作失败(由于某种原因),那么这些操作将不会被捕获,并且您的应用程序将无法正常运行。

答案 1 :(得分:0)

感谢您的建议,我结束了使用任何Logger的工作,Nlog就是这种情况。 让我知道这是否是正确的编码标准。或随时发表评论。

            while ((line = r.ReadLine()) != null)
            {
                string[] parts = line.Split(',');
                // Skip the column names row
                if (parts[0] == "id") continue;

                try
                {
                    CustomerData dbp = new CustomerData
                    { 
                        CustomerId = Convert.ToInt32(parts[0]),
                        CustomerName = parts[1],
                        CustomerState = parts[2],
                        ProductId = Convert.ToInt32(parts[3]),
                        QuantityBought = Convert.ToInt32(parts[4]),
                    };
                    customerdata.Add(dbp);
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Got exception."); 
                    logger.Info(line);
                }
            }