From a75e8e051e4854bd65721f82ec1acc7c51764f30 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Wed, 26 Oct 2022 13:56:41 -0700 Subject: [PATCH] docs: document that when `invoke` rejects, it gives a different Error (#36127) --- docs/api/ipc-renderer.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/api/ipc-renderer.md b/docs/api/ipc-renderer.md index dae89527aa..d17b761286 100644 --- a/docs/api/ipc-renderer.md +++ b/docs/api/ipc-renderer.md @@ -96,14 +96,6 @@ Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will no included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception. -> **NOTE:** Sending non-standard JavaScript types such as DOM objects or -> special Electron objects will throw an exception. -> -> Since the main process does not have support for DOM objects such as -> `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over -> Electron's IPC to the main process, as the main process would have no way to decode -> them. Attempting to send such objects over IPC will result in an error. - The main process should listen for `channel` with [`ipcMain.handle()`](./ipc-main.md#ipcmainhandlechannel-listener). @@ -126,6 +118,21 @@ If you need to transfer a [`MessagePort`][] to the main process, use [`ipcRender If you do not need a response to the message, consider using [`ipcRenderer.send`](#ipcrenderersendchannel-args). +> **Note** +> Sending non-standard JavaScript types such as DOM objects or +> special Electron objects will throw an exception. +> +> Since the main process does not have support for DOM objects such as +> `ImageBitmap`, `File`, `DOMMatrix` and so on, such objects cannot be sent over +> Electron's IPC to the main process, as the main process would have no way to decode +> them. Attempting to send such objects over IPC will result in an error. + +> **Note** +> If the handler in the main process throws an error, +> the promise returned by `invoke` will reject. +> However, the `Error` object in the renderer process +> will not be the same as the one thrown in the main process. + ### `ipcRenderer.sendSync(channel, ...args)` * `channel` string