【问题标题】:Error can't be catched?: NodeJS/Hyperledger无法捕获错误?:NodeJS/Hyperledger
【发布时间】:2020-04-06 08:45:27
【问题描述】:

隐藏错误的最佳方法是什么?

我想摆脱这个错误(隐藏它,或者如果有人知道问题出在哪里更好地解决它):

    2019-12-12T17:43:54.626Z - error: [Orderer.js]: sendBroadcast - on error: "Error: 2 UNKNOWN: Stream removed\n    
    at Object.exports.createStatusError (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/common.js:91:15)\n    
    at ClientDuplexStream._emitStatusIfDone (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client.js:233:26)\n    
    at ClientDuplexStream._receiveStatus (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client.js:211:8)\n    
    at Object.onReceiveStatus (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client_interceptors.js:1306:15)\n    
    at InterceptingListener._callNext (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client_interceptors.js:568:42)\n    
    at InterceptingListener.onReceiveStatus (/home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client_interceptors.js:618:8)\n    
    at /home/hl-root/fabric-samples/fullgear-4node-setup/app/node_modules/grpc/src/client_interceptors.js:1123:18"
Transaction submitted

我的代码如下:

    while {
         try {
            const gateway = new Gateway();
            await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: true } });
            const network = await gateway.getNetwork('mychannel');
            const contract = network.getContract('chaincode');
            await contract.submitTransaction('createTransaction', 'Transaction3', '1');
            console.log('Transaction submitted');
        }
        catch (error) {
                console.error(`Failed to submit transaction: ${error}`);
                process.exit(1);
            }
    }

我得到了错误,但是指令已经发出并且我得到了日期(所以捕获错误永远不会起作用?)

【问题讨论】:

    标签: node.js error-handling try-catch hyperledger


    【解决方案1】:

    您的问题是 network.getContract 返回一个 Promise,所以这里发生的事情是您的代码在 Promise 解决之前移动通过该行,因此您的 try/catch 在引发错误之前完成,因此出现异常。试试这个:

    while {
         try {
            const gateway = new Gateway();
            await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: true } });
            const network = await gateway.getNetwork('mychannel');
            const contract = await network.getContract('chaincode');
            await contract.submitTransaction('createTransaction', 'Transaction3', '1');
            console.log('Transaction submitted');
        }
        catch (error) {
                console.error(`Failed to submit transaction: ${error}`);
                process.exit(1);
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多