{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/corefx/issues/6398","repository_url":"https://api.github.com/repos/dotnet/corefx","labels_url":"https://api.github.com/repos/dotnet/corefx/issues/6398/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/6398/comments","events_url":"https://api.github.com/repos/dotnet/corefx/issues/6398/events","html_url":"https://github.com/dotnet/corefx/issues/6398","id":136497356,"number":6398,"title":"Support global unhandled exception handler","user":{"login":"terrajobst","id":5169960,"avatar_url":"https://avatars.githubusercontent.com/u/5169960?v=3","gravatar_id":"","url":"https://api.github.com/users/terrajobst","html_url":"https://github.com/terrajobst","followers_url":"https://api.github.com/users/terrajobst/followers","following_url":"https://api.github.com/users/terrajobst/following{/other_user}","gists_url":"https://api.github.com/users/terrajobst/gists{/gist_id}","starred_url":"https://api.github.com/users/terrajobst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terrajobst/subscriptions","organizations_url":"https://api.github.com/users/terrajobst/orgs","repos_url":"https://api.github.com/users/terrajobst/repos","events_url":"https://api.github.com/users/terrajobst/events{/privacy}","received_events_url":"https://api.github.com/users/terrajobst/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/corefx/labels/api-needs-work","name":"api-needs-work","color":"207de5"}],"state":"open","locked":false,"assignee":{"login":"terrajobst","id":5169960,"avatar_url":"https://avatars.githubusercontent.com/u/5169960?v=3","gravatar_id":"","url":"https://api.github.com/users/terrajobst","html_url":"https://github.com/terrajobst","followers_url":"https://api.github.com/users/terrajobst/followers","following_url":"https://api.github.com/users/terrajobst/following{/other_user}","gists_url":"https://api.github.com/users/terrajobst/gists{/gist_id}","starred_url":"https://api.github.com/users/terrajobst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terrajobst/subscriptions","organizations_url":"https://api.github.com/users/terrajobst/orgs","repos_url":"https://api.github.com/users/terrajobst/repos","events_url":"https://api.github.com/users/terrajobst/events{/privacy}","received_events_url":"https://api.github.com/users/terrajobst/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dotnet/corefx/milestones/4","html_url":"https://github.com/dotnet/corefx/milestones/1.0.0-rtm","labels_url":"https://api.github.com/repos/dotnet/corefx/milestones/4/labels","id":1248719,"number":4,"title":"1.0.0-rtm","description":"2016 https://github.com/aspnet/Home/wiki/Roadmap","creator":{"login":"joshfree","id":1302850,"avatar_url":"https://avatars.githubusercontent.com/u/1302850?v=3","gravatar_id":"","url":"https://api.github.com/users/joshfree","html_url":"https://github.com/joshfree","followers_url":"https://api.github.com/users/joshfree/followers","following_url":"https://api.github.com/users/joshfree/following{/other_user}","gists_url":"https://api.github.com/users/joshfree/gists{/gist_id}","starred_url":"https://api.github.com/users/joshfree/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshfree/subscriptions","organizations_url":"https://api.github.com/users/joshfree/orgs","repos_url":"https://api.github.com/users/joshfree/repos","events_url":"https://api.github.com/users/joshfree/events{/privacy}","received_events_url":"https://api.github.com/users/joshfree/received_events","type":"User","site_admin":false},"open_issues":320,"closed_issues":632,"state":"open","created_at":"2015-08-10T18:04:00Z","updated_at":"2016-04-26T23:35:31Z","due_on":"2016-06-30T07:00:00Z","closed_at":null},"comments":27,"created_at":"2016-02-25T20:12:07Z","updated_at":"2016-04-26T23:42:13Z","closed_at":null,"body":"As outlined in https://github.com/dotnet/coreclr/issues/2999, we need a replacement for `AppDomain.UnhandledException`. Couple of requirements:\r\n\r\n* Should be a low-level API that isn't depending on other orthogonal features such as `AssemblyLoadContext`, `Task`, or `Thread`\r\n* Can't be on a type that is already exposed in .NET Framework (such as `Environment`)\r\n* Should be raised for all threads\r\n\r\nThoughts?\r\n\r\n/cc @weshaggard @KrzysztofCwalina @stephentoub "},"comment":{"url":"https://api.github.com/repos/dotnet/corefx/issues/comments/214921650","html_url":"https://github.com/dotnet/corefx/issues/6398#issuecomment-214921650","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/6398","id":214921650,"user":{"login":"NickCraver","id":454813,"avatar_url":"https://avatars.githubusercontent.com/u/454813?v=3","gravatar_id":"","url":"https://api.github.com/users/NickCraver","html_url":"https://github.com/NickCraver","followers_url":"https://api.github.com/users/NickCraver/followers","following_url":"https://api.github.com/users/NickCraver/following{/other_user}","gists_url":"https://api.github.com/users/NickCraver/gists{/gist_id}","starred_url":"https://api.github.com/users/NickCraver/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NickCraver/subscriptions","organizations_url":"https://api.github.com/users/NickCraver/orgs","repos_url":"https://api.github.com/users/NickCraver/repos","events_url":"https://api.github.com/users/NickCraver/events{/privacy}","received_events_url":"https://api.github.com/users/NickCraver/received_events","type":"User","site_admin":false},"created_at":"2016-04-26T23:42:13Z","updated_at":"2016-04-26T23:42:13Z","body":"Is there any progress on this API? I'd hate for this to miss RC2 since it's the last API needed to port several applications here (that use our global error handler to monitor the entire network).\r\n\r\nI want to throw another +1 for @justinvp's proposal above, though `Exception` seems too redundant in the namespace, type, *and* each event. I'd shorten the event names to remove the suffix, e.g. just `Unhandled`:\r\n\r\n```C#\r\nnamespace System.Runtime.ExceptionServices\r\n{\r\n    public static class ExceptionEvents\r\n    {\r\n        public static event EventHandler<UnhandledExceptionEventArgs> Unhandled;\r\n    }\r\n\r\n    public class UnhandledExceptionEventArgs : EventArgs\r\n    {\r\n        public UnhandledExceptionEventArgs(object exception, bool isTerminating);\r\n        public object ExceptionObject { get; }\r\n        public bool IsTerminating { get; }\r\n    }\r\n}\r\n```\r\n\r\nThis means the usage becomes:\r\n```C#\r\nExceptionEvents.Unhandled += (o, args) => {};\r\n```"}}