public static void handleUncaughtException(Throwable t) {
		if (t instanceof DomainObjectException) {
			t = t.getCause();
		}
		if (t instanceof TerminatedTransactionException) {
			Msg.showError(
				GhidraThreadGroup.class,
				null,
				"Terminated Transaction",
				"Transaction has been terminated!\n \n"
					+ "All open transactions must be closed before a new transaction will be allowed.\n"
					+ "Try cancelling all long running tasks.\n \n"
					+ "Note that this error may be repeated until all running tasks are terminated.");
			return;
		}

		if (t instanceof DomainObjectLockedException) {
			Msg.showError(GhidraThreadGroup.class, null, "Transaction Not Allowed", t.getMessage() +
				"\n \n" + "No modifications are permitted until the locking process has completed.");
			return;
		}

		// pass up for more generic exception handling
		SwingExceptionHandler.handleUncaughtException(t);
	}
Handle any uncaught throwable/exception.
@param t throwable
Ghidra/Features/Base/src/main/java/ghidra/GhidraThreadGroup.java