Как сделать счётчик ошибок правильно
Я хочу сделать счётчик ошибок, чтобы при каждом получения эксепшен прибавляло +1 ошибка в счётчик, не больше.
public static int Errors = 0; // Это счётчик, считаем с нуля.
public static void Method()
{
try
{
....
}
catch (Exception ex)
{
Errors++; // Если есть ошибка добавляем в счётчик.
}
}
Но если есть foreach допустим, то он крутит постоянно, а мне надо только один раз добавить.
Какие есть вообще варианты добавления счётчика ошибок?
Ответы (1 шт):
Автор решения: MRXIT
→ Ссылка
using System;
using System.Threading;
namespace Application
{
internal sealed class Core
{
private static void Main()
{
for (int index = 0; index < 10; index++)
{
try
{
throw new Exception();
}
catch { ExceptionCountExtensions.Instance.Increment(); }
}
Console.WriteLine($"Count exception: {ExceptionCountExtensions.Instance.GetCountException}");
Console.ReadLine();
}
}
internal class ExceptionCountExtensions
{
public int GetCountException => Count;
private int Count;
private static volatile ExceptionCountExtensions _instance;
private static readonly object SyncRoot = new object();
public static ExceptionCountExtensions Instance
{
get
{
if (_instance is not null)
return _instance;
lock (SyncRoot)
{
if (_instance == null)
_instance = new ExceptionCountExtensions();
}
return _instance;
}
}
public void Increment()
{
Interlocked.Increment(ref Count);
}
}
}