node.js - 无法发现错误? : NodeJS/Hyperledger

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

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

我想摆脱此错误(将其隐藏,或者如果有人知道问题出在哪里,则可以更好地解决):

    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);
            }
    }

我收到错误,但指示已发出,我知道日期(所以catch错误从不起作用?)

最佳答案

您的问题是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);
        }
}

关于node.js - 无法发现错误? : NodeJS/Hyperledger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59313396/

相关文章:

javascript - 在沙箱中执行代码,模块在相同的上下文中

javascript - 在 Node.js 中处理 fatal error 的正确方法

exception - 为什么说异常对于输入验证来说如此糟糕?

json - swift 中 do catch 语句错误

java - while 循环中的 Try block 在第二次迭代时不执行

java - 无法读取程序中的 Java 文件

javascript - 过滤对象数组

node.js - 自签名证书仅适用于 localhost,不适用于 127.0.0.1

javascript - Restful api 末尾的 Id 问题

php - 如何避免在替换文件期间崩溃您的网络应用程序?