ThisIsABugException концептуально неверен, я бы сказал.
Если контракт вашего метода передан (параметры верны, поэтому нет никаких ArgumentException), ваш метод технически не должен завершиться сбоем.Зачем это нужно, если все параметры верны, а логика самого метода верна?
Поэтому, когда вы проверяете контракт метода (параметры), вы вызываете ArgumentException или его дочерние элементы.
Если в пределахваш метод вы называете чем-то ненадежным и получаете какой-то странный результат, тогда вы, вероятно, должны поднять что-то значимое, а не потерпеть неудачу с «о, баг! баг!».Ошибка действительно, и что?Я предпочел бы поднять что-то значимое в контексте операции.
Если вам нужно выбросить из-за ваших бизнес-правил, скажем, вас попросили деактивировать учетную запись, и параметры верны, но во время метода, который вы обнаружиличто эта учетная запись уже неактивна, это действительно недопустимая операция, тогда будет делать InvalidOperationException, поэтому у нас есть это «универсальное» исключение в .NET.
Вот почему вы никогда не хотите вызывать ThisIsABugException или что-то в этом роде.похоже.