首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node 脚本遭遇异常时如何安全退出

❞ exit code 代表一个进程的返回码,通过系统调用 exit_group 来触发。在 POSIX 中,0 代表正常的返回码,1-255 代表异常返回码,一般主动抛出的错误码都是 1。...异常码在操作系统中随处可见,以下是一个关于 cat 命令的异常以及它的 exit code,并使用 strace 追踪系统调用。...$ cat a cat: a: No such file or directory # 使用 strace 查看 cat 的系统调用 # -e 只显示 write 与 exit_group 的系统调用...+++ exited with 1 +++ 从系统调用的最后一行可以看出,该进行的 exit code 是 1,并把错误信息输出到 stderr (标准错误的 fd 为 2) 中 如何查看 exit code...「而在 Node 中的错误处理中,我们倾向于所有的异常都交由 async/await 来处理,而当发生异常时,由于此时 exit code 为 0 并不会导致镜像构建失败。」

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    折腾Google Docs API 的坑

    google docs api 起步 有关链接 快速开始 https://developers.google.cn/docs/api/quickstart/nodejs#step_2_install_the_client_library...docs/quickstart/index.js 登录谷歌账号后 否则后面的按钮点击后没有反应的 打开https://developers.google.com/docs/api/quickstart/nodejs...点击 获取api使用凭据 点击按钮后会显示 然后点击下载凭据 保存到项目中 等下运行程序会读取这个文件 把github上的代码下载下来 记得执行 安装相应的包 npm install googleapis...会出现以下信息 这个时候就要点击链接 进行屏幕授权 ,会让你选择谷歌账号登录,直接即可 复制代码到控制台 在这一步复制后 我的机器会报错 暂时不知道是哪里 出错了, 等知道了再来补充博客 告诉大家 错误信息如下...216.58.200.42:443', type: 'system', errno: 'ETIMEDOUT', code: 'ETIMEDOUT', config: {

    1.3K20

    一文告诉你java NIO底层用到的那些connect、bind、listen、accept、close

    客户端没有收到SYN的响应,返回ETIMEDOUT错误。...对于4.4BSD内核发送SYN,没有响应再等6s发送,无响应等24s,如果总共等了75s仍然没有就返回ETIMEDOUT错误 客户端收到SYN响应为RST,返回ECONNREFUESED错误。...由于地址结构是个常量,所以如果是内核指定端口,无法返回,所以要获取内核指定的临时端口,必须调用getsockname返回协议地址 listen 做两件事 指示内核应该接受指向此套接字的连接请求,对应...第二步accept返回结果,连接被内核接受,新的套接字(connfd)创建 image.png 第三步并发服务器会调用fork,此时listenfd和connfd在父进程和子进程之间共享...image.png 最后父进程关闭已连接套接字,子进程关闭监听套接字,由子进程处理与客户端的连接,父进程则继续监听下一个客户端连接请求 image.png 父进程中调用fork之前所打开的所有描述符在

    1.7K30

    linux网络编程之socket(十一):套接字IO超时设置方法和用select实现超时

    ,一种是套接字产生错误              * 此时错误信息不会保存至errno变量中(select没出错),因此,需要调用              * getsockopt来获取 */             ...3、accept_timeout :此函数是带超时的accept 函数,如果能从if (wait_seconds > 0) 括号执行后向下执行,说明select 返回为1,检测到已连接队列不为空,此时再调用...4、connect_timeout :在调用connect前需要使用fcntl 函数将套接字标志设置为非阻塞,如果网络环境很好,则connect立即返回0,不进入if 大括号执行;如果网络环境拥塞,则connect...此后调用select与前面3个函数类似,但这里关注的是可写事件,因为一旦连接建立,套接字就可写。...还需要注意的是当select 返回1,可能有两种情况,一种是连接成功,一种是套接字产生错误,由这里可知,这两种情况都会产生可写事件,所以需要使用getsockopt来获取一下。

    6.2K01

    Electron 常见问题收录

    不过由于国内网络环境比较复杂,而 Electron 的很多开发资源由位于境外服务器上,所以很多客户在初次对接时会遇到很多的环境配置问题。...问题分析 这里为方便大家理解,需要解释一下工作路径的概念: 在 Electron 应用运行时,调用 global.process.cwd() 函数,得到的结果 “/” 即为运行时的工作路径,当在运行时加载文件时...解决方案 升级到最新的 node ,请参考:nodejs官方网站。...准备工作 推荐安装官方最新的 nodejs ,安装过程请参考 nodejs官方网站。 本文以 electron-v8.1.1-win32-x64.zip 为例,其它操作系统请根据实际情况选择。...: RequestError: connect ETIMEDOUT 52.216.240.76:443 at ClientRequest.

    19K165

    【Linux】accept(2) - Linux man page

    ,可以使用 select 或者 poll 方法,当尝试一个新的连接的时候,一个可读时间会被触发,此时可以调用 accept 方法获取一个套接字连接。...在新的文件描述符上的正常读取或写入可以暗示确认,关闭新的套接字可以暗示拒绝。目前在Linux上只有DECNet具有这些语义。...各种Linux内核可能会返回其他错误,如ENOSR、ESOCKTNOSUPPORT、EPROTONOSUPPORT、ETIMEDOUT。在跟踪过程中可能会看到ERESTARTSYS值。...被传递或select(2)或poll(2) 返回一个可读事件后,可能并不总是有连接在等待,因为在accept()被调用之前,连接可能已经被异步网络错误或其他线程移除。...把它做成size_t是完全错误的,因为size_t很少和64位架构上的 "int "一样大。 "socklen_t " 必须与 "int "大小相同,因为BSD套接字接口就是这样的。

    29530

    Node.js 15 正式版发布

    它是为了将Addons插件和底层JavaScript引擎的改动隔离开来,并且允许在一个版本编译的模块不需要重新编译就可以在更高版本的Node.js上运行。...使用node-addon-api构建的二进制文件将依赖于Node.js导出的基于C函数符号的N-API接口,node-addon-api是一种更有效写代码的方法,用来编写调用N-API。...并且,在2016年11月国际互联网工程任务组(IETF)召开了第一次QUIC工作组会议,受到了业界的广泛关注,意味着QUIC开始在成为新一代传输层协议上迈出了关键的一步。...同时,QUIC 具有内置的 TLS 1.3 安全性、流控制、错误纠正、连接迁移和多路复用。...pattern可以是一个字符串或一个 RegExp, replacement可以是一个字符串或一个在每次匹配被调用的函数。

    1.8K30

    TRTC Electron SDK 常见问题收录

    不过由于国内网络环境比较复杂,而 Electron 的很多开发资源由位于境外服务器上,所以很多客户在初次对接时会遇到很多的环境配置问题。...问题分析 这里为方便大家理解,需要解释一下工作路径的概念: 在 Electron 应用运行时,调用 global.process.cwd() 函数,得到的结果 “/” 即为运行时的工作路径,当在运行时加载文件时...解决方案 升级到最新的 node ,请参考:nodejs官方网站。...准备工作 推荐安装官方最新的 nodejs ,安装过程请参考 nodejs官方网站。 本文以 electron-v8.1.1-win32-x64.zip 为例,其它操作系统请根据实际情况选择。...: RequestError: connect ETIMEDOUT 52.216.240.76:443 at ClientRequest.

    5.1K20

    从抓包的角度分析connect()函数的连接过程

    如果未决连接队列有空位,就将该连接加入未决连接队列。当 connect 函数成功返回后,表明tcp的“三次握手”连接已完成,此时accept函数获取到一个客户端连接并返回。 ?...服务端首先调用listen函数监听客户端的连接请求,然后调用accept函数阻塞等待取出未决连接队列中的客户端连接,如果未决连接队列一直为空,这意味着没有客户端和服务器建立连接,那么accept就会一直阻塞...这里我们介绍connect函数返回失败的几种情况: 第一种 当客户端发送了SYN报文后,没有收到确认则返回ETIMEDOUT错误,值得注意的是,失败一次并不会马上返回ETIMEDOUT错误。...这个时间是累加的,如果总共等了75s后还是没收到确认,那么客户端将返回ETIMEDOUT错误。 对于linux系统,改变这个系统上限值也比较容易,由于需要改变系统配置参数,你需要root权限。...错误。

    2.6K10

    UNPv1第四章:基本TCP套接口编程

    connect函数将激发TCP的三次握手过程,而且仅在连接建立成功或出错时才返回,其中出错有如下几种情况: 1).若TCP客户没有收到SYN包的响应,则返回ETIMEDOUT错误。...3).若客户发出的SYN在中间的路由器上引发了一个“destination unreachable”的ICMP错误,则按第一种情形继续发送SYN,若在规定的时间内没有收到回应,则将ICMP错误作为EHOSTUNREACH...fork 在子进程中返回0,在父进程中返回子进程的ID号的原因在于:一个子进程只有一个父进程,而且在子进程中可以通过调用getppid获取父进程ID。...2).在以端口号0调用后,getsockname用于返回内核赋予的本地端口号 3).一旦连接建立,获取客户身份便可以调用getpeername。...4).在一个以通配IP地址调用bind的TCP服务器上,与某个客户的连接一旦建立(accept成功返回),getsockname就可以用于返回由内核赋予该连接的本地IP地址,在这样的调用中,套接字描述符参数必须是已连接套接字的描述符

    55840

    Linux下Socket编程(三)——非阻塞select的使用简介

    SELECT_fncl.png 示例 客户端创建socket 调用fcntl设置阻塞模式 调用connect开始连接。...如果返回0,则连接成功 如果连接未成功 调用select来等待连接建立成功完成 如果select返回0,则表示建立连接超时。...如果select返回大于0的值,则需要检查套接口描述符是否可读或可写;如果套接口描述符可读或可写,则我们可以通过调用getsockopt来得到套接口上待处理的错误(SO_ERROR),如果连接建立成功,...这个错误值将是0,如果建立连接时遇到错误,则这个值是连接错误所对应的errno值(比如:ECONNREFUSED,ETIMEDOUT等) 连接成功后再设置为阻塞模式(方便读写) 关闭socket select...读取套接口上的错误"是遇到的第一个可移植性问题;如果出现问题,getsockopt源自Berkeley的实现是返回0,等待处理的错误在变量errno中返回;但是Solaris会让getsockopt返回

    4.3K10

    win10 x64下从0开始搭建YApi可视化接口管理平台

    =D:\python\mongoDB\data\ #日志输出文件路径 logpath=D:\python\mongoDB\logs\mongodb.log #错误日志采用追加模式,配置这个选项后mongodb...install -g node-gyp npm install --global --production windows-build-tools 2>.提示 Error: (node:14532) UnhandledPromiseRejectionWarning...YApi接口管理平台 >安装node.js,从Node.js官网下载安装包 >使用npm安装yapi-cli,执行指令:npm install yapi-cli [-g] 4、在yapi安装的任意目录下...项目设置 -> token 设置获取 file:是 swagger 接口文档文件,可使用绝对路径或 url merge:导入旧的接口策略,默认使用智能模式,一共有 "normal"(普通模式) , "good..."(智能合并), "merge"(完全覆盖) 三种模式 server:是yapi服务器地址 5、在新建的配置文件当前目录下,执行:yapi import指令,把数据导入yapi接口管理平台(也可配合crontab

    1.7K51
    领券