Javascript 如何避免节点中未处理的PromisejectionWarning

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

我必须用不同的值组合测试一些基于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 = 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(i
catch(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')。