@@ -126,68 +126,86 @@ private static async Task LoadGSudo()
126126
127127 private void RegisterErrorHandling ( )
128128 {
129- UnhandledException += ( _ , e ) =>
130- {
131- if ( Debugger . IsAttached ) Debugger . Break ( ) ;
132- string message = $ "Unhandled Exception raised: { e . Message } ";
133- string stackTrace = $ "Stack Trace: \n { e . Exception . StackTrace } ";
134- Logger . Error ( " -" ) ;
135- Logger . Error ( " -" ) ;
136- Logger . Error ( " ⚠️⚠️⚠️ START OF UNHANDLED ERROR TRACE ⚠️⚠️⚠️" ) ;
137- Logger . Error ( message ) ;
138- Logger . Error ( stackTrace ) ;
139- Logger . Error ( " ⚠️⚠️⚠️ END OF UNHANDLED ERROR TRACE ⚠️⚠️⚠️" ) ;
140- Logger . Error ( " -" ) ;
141- Logger . Error ( " -" ) ;
142- if ( Environment . GetCommandLineArgs ( ) . Contains ( "--report-all-errors" ) || RaiseExceptionAsFatal || MainWindow is null )
143- {
144- CrashHandler . ReportFatalException ( e . Exception ) ;
145- }
146- else
147- {
148- MainWindow . ErrorBanner . Title = CoreTools . Translate ( "Something went wrong" ) ;
149- MainWindow . ErrorBanner . Message = CoreTools . Translate ( "An interal error occurred. Please view the log for further details." ) ;
150- MainWindow . ErrorBanner . IsOpen = true ;
151- Button button = new ( ) { Content = CoreTools . Translate ( "WingetUI Log" ) , } ;
152- button . Click += ( sender , args ) => MainWindow . NavigationPage . UniGetUILogs_Click ( sender , args ) ;
153- MainWindow . ErrorBanner . ActionButton = button ;
154- e . Handled = true ;
155- }
156- } ;
157-
158- TaskScheduler . UnobservedTaskException += ( sender , args ) =>
129+ try
159130 {
160- Logger . Error ( $ "An unhandled exception occurred in a Task (sender: { sender ? . GetType ( ) . ToString ( ) ?? "null" } )") ;
161- Exception ? e = args . Exception . InnerException ;
162- Logger . Error ( args . Exception ) ;
163- while ( e is not null )
131+ UnhandledException += ( _ , e ) =>
164132 {
165- Logger . Error ( "------------------------------" ) ;
166- Logger . Error ( e ) ;
167- e = e . InnerException ;
168- }
169- if ( Debugger . IsAttached ) Debugger . Break ( ) ;
170-
171- Dispatcher . TryEnqueue ( ( ) =>
172- {
173- try
133+ if ( Debugger . IsAttached ) Debugger . Break ( ) ;
134+ string message = $ "Unhandled Exception raised: { e . Message } ";
135+ string stackTrace = $ "Stack Trace: \n { e . Exception . StackTrace } ";
136+ Logger . Error ( " -" ) ;
137+ Logger . Error ( " -" ) ;
138+ Logger . Error ( " ⚠️⚠️⚠️ START OF UNHANDLED ERROR TRACE ⚠️⚠️⚠️" ) ;
139+ Logger . Error ( message ) ;
140+ Logger . Error ( stackTrace ) ;
141+ Logger . Error ( " ⚠️⚠️⚠️ END OF UNHANDLED ERROR TRACE ⚠️⚠️⚠️" ) ;
142+ Logger . Error ( " -" ) ;
143+ Logger . Error ( " -" ) ;
144+ if ( Environment . GetCommandLineArgs ( ) . Contains ( "--report-all-errors" ) || RaiseExceptionAsFatal || MainWindow is null )
145+ {
146+ CrashHandler . ReportFatalException ( e . Exception ) ;
147+ }
148+ else
174149 {
175150 MainWindow . ErrorBanner . Title = CoreTools . Translate ( "Something went wrong" ) ;
176151 MainWindow . ErrorBanner . Message =
177152 CoreTools . Translate ( "An interal error occurred. Please view the log for further details." ) ;
178153 MainWindow . ErrorBanner . IsOpen = true ;
179154 Button button = new ( ) { Content = CoreTools . Translate ( "WingetUI Log" ) , } ;
180- button . Click += ( s , a ) => MainWindow . NavigationPage . UniGetUILogs_Click ( s , a ) ;
155+ button . Click += ( sender , args ) => MainWindow . NavigationPage . UniGetUILogs_Click ( sender , args ) ;
181156 MainWindow . ErrorBanner . ActionButton = button ;
157+ e . Handled = true ;
182158 }
183- catch ( Exception ex )
159+ } ;
160+ }
161+ catch ( Exception ex )
162+ {
163+ if ( Debugger . IsAttached ) Debugger . Break ( ) ;
164+ Logger . Error ( ex ) ;
165+ }
166+
167+ try
168+ {
169+ TaskScheduler . UnobservedTaskException += ( sender , args ) =>
170+ {
171+ Logger . Error ( $ "An unhandled exception occurred in a Task (sender: { sender ? . GetType ( ) . ToString ( ) ?? "null" } )") ;
172+ Exception ? e = args . Exception . InnerException ;
173+ Logger . Error ( args . Exception ) ;
174+ while ( e is not null )
184175 {
185- Logger . Error ( ex ) ;
176+ Logger . Error ( "------------------------------" ) ;
177+ Logger . Error ( e ) ;
178+ e = e . InnerException ;
186179 }
187- } ) ;
188180
189- args . SetObserved ( ) ;
190- } ;
181+ if ( Debugger . IsAttached ) Debugger . Break ( ) ;
182+
183+ Dispatcher . TryEnqueue ( ( ) =>
184+ {
185+ try
186+ {
187+ MainWindow . ErrorBanner . Title = CoreTools . Translate ( "Something went wrong" ) ;
188+ MainWindow . ErrorBanner . Message = CoreTools . Translate (
189+ "An interal error occurred. Please view the log for further details." ) ;
190+ MainWindow . ErrorBanner . IsOpen = true ;
191+ Button button = new ( ) { Content = CoreTools . Translate ( "WingetUI Log" ) , } ;
192+ button . Click += ( s , a ) => MainWindow . NavigationPage . UniGetUILogs_Click ( s , a ) ;
193+ MainWindow . ErrorBanner . ActionButton = button ;
194+ }
195+ catch ( Exception ex )
196+ {
197+ Logger . Error ( ex ) ;
198+ }
199+ } ) ;
200+
201+ args . SetObserved ( ) ;
202+ } ;
203+ }
204+ catch ( Exception ex )
205+ {
206+ if ( Debugger . IsAttached ) Debugger . Break ( ) ;
207+ Logger . Error ( ex ) ;
208+ }
191209 }
192210
193211 private static void SetUpWebViewUserDataFolder ( )
0 commit comments