Предположим, я пишу многопоточный C# код. (Я знаю ... плохая идея из get- go;))
У меня есть некоторый код B, который, как я ожидаю, будет вызван только после завершения кода A. Я тщательно пишу и проверяю свой код, чтобы убедить себя в том, что это правда, но на самом деле я не могу реализовать это ожидание, я могу только проверить, верна ли она.
Поэтому я ставлю регистрирует, и если проверка когда-либо не проходит, я хочу выдать и исключение, чтобы разработчик получил большое кричащее сообщение в журнале, говорящее: «Нет, ты облажался; есть еще крайний случай, когда многопоточность не делает то, что ты убедил себя в этом. "
Какой лучший C# Exception
тип бросить здесь?
Мой инстинкт go с этим старым стандартом InvalidOperationException
или, возможно, просто new Exception(message)
. Но было бы неплохо, если бы у меня был чуть более конкретный тип c, который я мог бы выбросить (например, бросить ArgumentException
, когда возникла проблема)
Есть несколько типов Exception
, которые автоматически завершите с Thread
или Sync
, но все они выглядят так, как будто предназначены для более глубоких проблем. то есть что-то не так с фактическими потоками. Здесь все в порядке ... это логика потоков разработчика c, в котором есть ошибка.
Есть ли здесь какие-либо разумные предсуществующие классы Exception
, которые можно использовать?