Javascript 如何避免节点中未处理的PromisejectionWarning
我必须用不同的值组合测试一些基于JSON/RPC的web应用程序。某些值会导致错误(如预期的那样)。现在我只想继续我的测试,保存错误/异常(执行期间抛出)。例如,根据给定的代码Javascript 如何避免节点中未处理的PromisejectionWarning,javascript,node.js,exception,Javascript,Node.js,Exception,我必须用不同的值组合测试一些基于JSON/RPC的web应用程序。某些值会导致错误(如预期的那样)。现在我只想继续我的测试,保存错误/异常(执行期间抛出)。例如,根据给定的代码 const abcWeb = require('abc-web'); const abcWeb = new abcWeb('http://testnet-jsonrpc.abc-xyz.org:12537'); const abTx = require('abc-transaction'); var n = 1
const abcWeb = require('abc-web');
const abcWeb = new abcWeb('http://testnet-jsonrpc.abc-xyz.org:12537');
const abTx = require('abc-transaction');
var n = 12;
var gp = 10;
var gl = 21000;
var to = '5989d50787787b7e7';
var value = 70;
var limit = 4;
var i=1;
while (i<limit){
try{
const tx = new abTx({
n: n,
gp: gp,
gl:gl ,
to: to,
value:value ,
});
abTx.sign(Buffer.from('8f2016c58e898238dd5b4e00', 'hex'));
abcWeb.abx.sendSignedTransaction('0x' + tx.serialize().toString('hex'));
console.log(abTx);
} catch (exception) {
var message = exception.message;
console.log(message);
continue;
}
finally {
i++;
n +=1;
gp +=1;
gl +=1;
abcWeb.abx.getENumber().then(console.log);
}
}
const abcWeb=require('abc-web');
const abcWeb=新的abcWeb('http://testnet-jsonrpc.abc-xyz.org:12537');
const abTx=require('abc-transaction');
var n=12;
var-gp=10;
var gl=21000;
var to='5989d50787787b7e7';
var值=70;
var限值=4;
var i=1;
while(icatch(err)
无法捕获未处理的PromisejectionWarning
当您使用.then()
时承诺中的错误。您可以将其更改为等待我的承诺()
样式,也可以捕获承诺
示例:这将抛出错误unhandledPromisejectionWarning
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
test().then(console.log)
}捕捉(错误){
log('catch it',err);
}
})()
这不会:
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
test().then(console.log)
.catch(()=>{})
}捕捉(错误){
log('catch it',err);
}
})()
这也不会
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
等待测试
}捕捉(错误){
log('catch it',err);
}
})()
catch(err)
无法捕获未处理的PromisejectionWarning
当您使用.then()
时承诺中的错误。您可以将其更改为wait myPromise()
样式,也可以.catch
承诺
示例:这将抛出错误unhandledPromisejectionWarning
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
test().then(console.log)
}捕捉(错误){
log('catch it',err);
}
})()
这不会:
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
test().then(console.log)
.catch(()=>{})
}捕捉(错误){
log('catch it',err);
}
})()
这也不会
async函数测试(){
抛出新错误()
}
;(异步函数main(){
试一试{
等待测试
}捕捉(错误){
log('catch it',err);
}
})()
您可以为未处理的Rejection
事件添加处理程序:
process.on('unhandledRejection',错误=>{
//处理错误…还是不处理
});
见
和您可以为未处理的弹出
事件添加处理程序:
process.on('unhandledRejection',错误=>{
//处理错误…还是不处理
});
见
和简单,处理拒绝(.catch
是一个不错的选择)@Bravo将用简单的例子详细说明。因为我完全是新手。提前感谢您向我们展示您的实际代码,我们可以更具体地帮助您。未经处理的PromisejectionWarning
是由于承诺在没有的情况下拒绝。catch()
处理程序。您需要向我们展示相关的代码。我已经用代码编辑了我的问题。.未处理的PromiseEjection警告错误通常出现在sign函数和/或sendSignedTransaction之后。.我只想绕过它。.简单,处理拒绝(。catch
是一种方法)@Bravo将用简单的例子详细说明..因为我完全是新手..提前感谢向我们展示您的实际代码,我们可以更具体地帮助您。未经处理的PromisejectionWarning
是由于一个承诺在没有的情况下拒绝而引起的。
处理程序。您需要向我们展示相关的代码。我已经用代码编辑了我的问题。.未处理的PromiseEjection警告错误通常出现在sign函数和/或sendSignedTransaction之后。.我只想绕过它。.但我没有主函数,甚至没有任何函数…因此,在我的情况下@Tuan,您能帮我找出sh的位置吗我可以把这样的关键字“async”(用代码查看我更新的问题)放在哪里,但我没有主函数,甚至没有任何函数…所以,在我的例子中@Tuan,你能帮我找出我应该把这样的关键字“async”(用代码查看我更新的问题)放在哪里吗非常感谢@Amit你解决了我的问题..但是,它还带来了另一个问题,如果你能解决它,我将非常感谢..问题..进程.on调用了三次而不是一次(因为我知道我的错误只会出现一次),根据我下面的代码(i=0;i{console.log(“由于,错误而拒绝”)}由于错误而拒绝:由于错误而拒绝:请使用process.on('unhandledRejection'))在for循环之外。非常感谢@Amit您解决了我的问题。.但是,它还带来了另一个问题,如果您愿意解决它,我将非常感谢。.这个问题。.这个过程调用了三次而不是一次(因为我知道我的错误只会出现一次),按照我下面的代码(i=0;i{console.log(“拒绝原因”,error)})拒绝原因错误:拒绝原因错误:拒绝原因错误:请在for循环之外使用process.on('unhandledRejection')。