我有一个问题,我的应用程序关闭时,不和谐没有启动桌面上,因为RPC。
rpc.login({
clientId: "clientid"
})
.catch(console.error);
现在,当我添加catch块时,它不会在无法连接时关闭,但它会向用户显示一个相当长的错误,我想隐藏或替换为较小的控制台日志,如“RPC离线”或其他内容
Error: Could not connect
at Socket.onerror (C:\snapshot\test\node_modules\discord-rpc\src\transports\ipc.js:32:16)
at Object.onceWrapper (node:events:514:26)
at Socket.emit (node:events:394:28)
at emitErrorNT (node:internal/streams/destroy:193:8)
at emitErrorCloseNT (node:internal/streams/destroy:158:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
当然,我尝试使用普通的try-catch,只使用.catch(error)
而不是.catch(console.error)
,但这似乎并没有捕获不成功的连接,只是再次关闭脚本。
2条答案
按热度按时间yshpjwxd1#
rpc.login
方法返回一个**Promise**,如果不能实现(拒绝promise),就会抛出一个错误,你使用Promise.prototype.catch
和try/catch
的方法是绝对正确的,从你的问题中我可以理解我想隐藏或替换为一个较小的控制台日志,如“RPC离线”。
当你在promise中捕获错误时,你可以简单地传递一个
console.log
语句,如下所示:或使用
try/catch/finally
-(如果多次重试登录,建议使用)8fsztsew2#
现在,当我添加catch块时,它不会在无法连接时关闭,但它会向用户显示一个相当长的错误,我想隐藏或替换为较小的控制台日志,如“RPC离线”或其他内容
你的意思是你想做像
.catch(() => console.log("RPC Offline"))
这样的东西?当然,我尝试使用普通的
try-catch
和only .catch(error)而不是.catch(console.error)
,但这似乎并没有捕获不成功的连接,只是再次关闭脚本。因为这是一个promise,除非您是
await
ing,否则无法通过try-catch
处理拒绝