Clarify error handling
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 14 Jun 2023 05:38:43 +0000 (07:38 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 14 Jun 2023 05:38:43 +0000 (07:38 +0200)
swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java

index 4d91cf8e20e8a163740f58e4deeecc39e50abfa1..216dc3654100b45f82ac2b5a07d33b558209916d 100644 (file)
@@ -271,25 +271,24 @@ public class CmsWebEntryPoint extends AbstractSwtCmsView implements EntryPoint,
                                                        return null;
                                                }
                                        });
-                               } catch (Throwable e) {
-                                       if (e instanceof SWTError) {
-                                               SWTError swtError = (SWTError) e;
-                                               if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) {
-                                                       log.error("Unexpected SWT error in event loop, ignoring it. " + e.getMessage());
-                                                       continue eventLoop;
-                                               } else {
-                                                       log.error("Unexpected SWT error in event loop, shutting down...", e);
-                                                       break eventLoop;
-                                               }
-                                       } else if (e instanceof ThreadDeath) {
-                                               throw (ThreadDeath) e;
-                                       } else if (e instanceof Error) {
-                                               log.error("Unexpected error in event loop, shutting down...", e);
-                                               break eventLoop;
-                                       } else {
-                                               log.error("Unexpected exception in event loop, ignoring it. " + e.getMessage());
+                               } catch (SWTError e) {
+                                       SWTError swtError = (SWTError) e;
+                                       if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) {
+                                               log.error("Unexpected SWT error in event loop, ignoring it. " + e.getMessage());
                                                continue eventLoop;
+                                       } else {
+                                               log.error("Unexpected SWT error in event loop, shutting down...", e);
+                                               break eventLoop;
                                        }
+                               } catch (ThreadDeath e) {
+                                       // ThreadDeath is expected when the UI thread terminates
+                                       throw (ThreadDeath) e;
+                               } catch (Error e) {
+                                       log.error("Unexpected error in event loop, shutting down...", e);
+                                       break eventLoop;
+                               } catch (Throwable e) {
+                                       log.error("Unexpected exception in event loop, ignoring it. " + e.getMessage());
+                                       continue eventLoop;
                                }
                        }
                        if (!display.isDisposed())