Похоже, что вы хотите сделать что-то более приятное, чем взрыв, когда вызывается метод, который вы не реализовали. Я не верю, что это возможно с использованием AppDomain.FirstChanceException
или связанного с ним UnhandledException
. Здесь есть хороший ответ , в котором немного говорится о том, почему просто подавление исключений нежелательно.
Вместо этого вы могли бы использовать что-то, кроме создания исключения, чтобы пометить методы как не реализованные, например вызов помощник, который отображает ваше сообщение, если вы еще что-то не реализовали. Вы можете использовать прагмы #if
или ConditionalAttribute
, чтобы переключиться на фактическое создание исключений в сборках без DEBUG, если это желательно. В любом случае использование помощников для генерации исключений не является редкостью (см., Например, ThrowHelper
в BCL или Throw
в одном из моих собственных проектов), поскольку есть некоторые Преимущества, позволяющие избежать throw
s.
Это будет выглядеть так:
public void UnImplementedMethod()
{
// rather than "throw new NotImplementedException("some message")"
MyHelper.NotImplemented("some message");
}
// ....
static class MyHelper
{
[Conditional("DEBUG")]
public static void NotImplemented(string msg)
{
#if DEBUG // can use whatever configuration parameter
MessageBox.Show("Not Implemented: "+ msg);
#else
throw new NotImplementedException(msg);
#endif
}
}
Вы можете использовать общие параметры c для обработки нереализованных методов, которые имеют ненулевой возврат, хотя у вас есть чтобы решить, что на самом деле вернуть, если вы не генерируете исключение. С помощью этого шаблона вы можете делать все, что захотите, и при этом легко находить места, которые не были реализованы.