qishibo/AnotherRedisDesktopManager · critical

Uncaught Exception

Error message

Uncaught Exception: ${err}

What it means

This is the app's global last-resort handler in src/main.js: process.on('uncaughtException') displays the stringified error as a 5-second toast and emits closeConnection. It is not an error source itself - the message body is whatever exception escaped, typically a bug in an unhandled promise or renderer code path, and the stack is not shown to the user.

Solutions

  1. Open DevTools for the renderer and reproduce the action to capture the real stack trace.
  2. Update to the latest app version - if the crash is a known bug it is often already fixed.
  3. Report the stack trace to the project issue tracker; the toast alone (no stack) is not enough to diagnose.
  4. Reconnect afterwards - the handler force-closes the current connection.
Defensive patterns

Strategy: try-catch

Try / catch

// give every async UI action an explicit catch so the global handler stays a last resort
client.call(cmd, ...args)
  .then(handleReply)
  .catch((e) => this.$message.error(`Cmd failed: ${e.message}`));

Prevention

When it happens

Trigger: Any uncaught exception in the renderer: property access on undefined inside a promise without .catch, JSON.parse of malformed data, buffer handling bugs on unusual key names, incompatibilities between app version and server response shapes.

Common situations: App bugs triggered by binary/emoji key names, corrupted or unexpected server replies, or version skew (new server features, old app code). Usually reproducible by repeating the same action.


AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22). Data as JSON: /api/errors/3317eaee8e39746f. Report an issue: GitHub.

Appendix: source

Thrown at src/main.js:38

Vue.use(ElementUI, { size: 'small' });
Vue.config.productionTip = false;

/* eslint-disable no-new */
const vue = new Vue({
  el: '#app',
  i18n,
  components: { App },
  template: '<App/>',
});

// handle uncaught exception
process.on('uncaughtException', (err, origin) => {
  if (!err) {
    return;
  }

  vue.$message.error({
    message: `Uncaught Exception: ${err}`,
    duration: 5000,
  });

  vue.$bus.$emit('closeConnection');
});

export default vue;

View on GitHub (pinned to c149855106)