Electron 的错误处理

网上的文章都是讲怎么进程间通信,没有讲怎么通信错误信息的,这里记录一下

双向通信,主进程的错误消息传到渲染进程

也就是 ipcRenderer.invoke() 和 ipcMain.handle()。

其实只要 handle 里的回调函数抛出错误,渲染进程这边的 promise catch 一下错误就可以了。

举个例子:

主进程的一个网络错误逐层被捕获抛出,最后到了 handler 这里:

到了 handler 继续抛出

1
2
3
4
5
6
ipcMain.handle('getIdolInfo', async (event, id) => {
let resp = await request(`character?id=${id}`).catch((e) => {
throw e;
});
return resp;
});

到渲染进程这边捕获

1
2
3
await window.api.getIdolInfo(id).catch((error) => {
store.error = error.message;
});

结果

再把前面的 invoke 错误截掉就可以了。

单向通信

跟一般的通信一样,用 webContents.send() 把错误送过去就可以了。

文章作者: nulla
文章链接: https://nulla.top/2023/05/02/electron-error/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nulla blog