Почему следующий блок catch не перехватывает никаких исключений? Это как-то связано с отношением override-> base.Method ()?
На скриншоте видно, что выбрасывается исключение SqlException с номером 2627, но блок catch никогда не перехватывает его.
public override int SaveChanges()
{
try
{
return base.SaveChanges();
}
catch (SqlException ex) when (ex.Number == 2627)
{
Log.Error($"Duplicate key constraint violation occured while submitting changes, {ex.Message}");
var (resource, duplicateKey) = ExtractDuplicateKeyViolationDetails(ex.Message);
throw new DuplicateKeyException(resource, duplicateKey);
}
catch (SqlException ex) when (ex.Number == 547)
{
Log.Error($"Constraint violation occured while submitting changes, {ex.Message}");
var (resource, property) = ExtractConstraintViolationDetails(ex.Message);
throw new ConstraintViolationException(resource, property);
}
}