Вы можете либо затухать все свои исключения до корня своего консольного приложения, либо обернуть большой try/catch, который обрабатывает все исключения, или в начале вашего консольного приложения вы можете добавить обработчик событий в свой домен приложения для события «Необработанное исключение» и все исключения, которые не обрабатываются, будут перенаправлены туда.
using System;
using System.Security.Permissions;
public class Example
{
[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlAppDomain)]
public static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
try {
throw new Exception("1");
} catch (Exception e) {
Console.WriteLine("Catch clause caught : {0} \n", e.Message);
}
throw new Exception("2");
}
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception) args.ExceptionObject;
Console.WriteLine("MyHandler caught : " + e.Message);
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating);
}
}
source
Update
Не много больших простых вариантов делать то, что вы пытаетесь сделать. Одна вещь, которую вы можете попробовать, - установить msysgit/cygwin и использовать инструменты unix, чтобы найти все вхождения. Это было бы довольно экспериментально, и вам нужно было бы провести тяжелые испытания.
find <project dir> -type f -exec sed -i '.bak' 's/catch\(Exception ex\)\r\n{/catch\(Exception ex\)\r\n{\r\nModernExceptionHandler.handle(ex);\r\n/g' {} +
Каких должен рекурсивно ходить ваши каталоги проекта и заменить вхождение -
catch(Exception ex)
{
с
catch(Exception ex)
{
ModernExceptionHandler.handle(ex);
файлов, которые получают модифицированные будет иметь резервную копию сохраненную вместе с ними с .bak файлом расширение.
Более подробная информация о find/sed
Когда его для консольного приложения, почему вы упоминая ASP.Net? – user2900970
Вы даже попробовали googling для C# Console App Global Exception Handler? Я сделал это, и это был первый результат: http://stackoverflow.com/questions/3133199/net-global-exception-handler-in-console-application – thorkia
В .NET нет такой черной магии вуду. Вы можете получать уведомление только через AppDomain.UnhandledException, но вы не можете справиться с этим исключением, ваша программа всегда завершается. –