Здравствуйте, Аноним, Вы писали:
А>Как понять, какая строчка моего кода его вызывает?
Можно добавить очень простую проверку в Main:
private static bool _designer = true;
/// <summary>
/// Get designer mode
/// </summary>
public static bool IsDesigner
{
get { return _designer; }
}
/// <summary>
/// Program entry point
/// </summary>
[STAThread]
public static void Main()
{
// if we here we are not in designer
_designer = false;
// let IDE handle exceptions
if (System.Diagnostics.Debugger.IsAttached)
Run();
else
try
{
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Run();
}
catch (Exception e)
{
// catch exceptions outside of Application.Run
UnhandledException(e);
}
}
private static void Run()
{
Application.EnableVisualStyles();
// and so on ...
}
Тоесть под IDE ничего ловиться не будет, а будет вываливаться в отладку (показывать exception, trace stack, etc). Потом, нужно убрать все конструкции вида
catch {} (пустые качки). И по идее будет видно, кто кидается exception-ами.