捕获特定的异常,而不是“ Ex ex”

时间:2019-10-15 14:08:08

标签: c# exception .net-core try-catch

我正在将数据插入数据库,我猜这里可能会发生某种异常,可能不止一个?

通常我曾经写过这样的东西:

try
{
 //Execution code
}
catch(Exception ex)
{
 // log error and throw it
}

我认为最好捕获一些特定的异常,而不是像这样的(Exception ex)

try
{
    // my possibly bad code which inserts data to db
    var someEntity = CreateEntityFromDTO(someDTO);

    _context.SomeThing.Add(someEntity);

    await _context.SaveChangesAsync(cancellationToken);
}
catch(MySpecificException mse)
{
   // log error and throw it 
}

关于在将数据插入db时捕获异常的最佳实践是什么?

谢谢

欢呼

1 个答案:

答案 0 :(得分:1)

您可以将SpecificExceptions继承自另一个更高级别的DatabaseException,并在一个catch子句中处理所有Database Exceptions,例如

public class DatabaseException : Exception {}
public class MySpecificException : DatabaseException {}
public class YetAnotherDBSpecificException : DatabaseException {}
try
{
   // insert data.
}
catch(DatabaseException dbEx)
{
   // A database exception occured.
   Console.Log(dbEx.Message);
}
catch(Exception other)
{
   // Non db exception occured.
   Console.Log(other.Message);
}