在软件开发的复杂世界中,错误是不可避免的。无论是因为外部系统的变化、用户输入的错误,还是内部逻辑的缺陷,错误都会出现。为了有效管理这些错误,并向用户和开发者提供清晰、有用的反馈,设计一套合理的错误码和错误提示系统变得至关重要。本文将探讨设计错误码和错误提示的最佳实践,并介绍一些可供参考的开源规范和模板。
Windows 协议文档中所描述的协议规范中,错误码使用 HRESULT、Win32 错误码和 NTSTATUS 来描述。本文科普一下 HRESULT。
1. TCP/IP协议栈层次结构 2. TCP三次握手需要知道的细节点 3. TCP四次挥手需要知道的细节点(CLOSE_WAIT、TIME_WAIT、MSL) 4. TCP与UDP的区别与适用场景 5. linux常见网络模型详解(select、poll与epoll) 6. epoll_event结构中的epoll_data_t的fd与ptr的使用场景 7. Windows常见的网络模型详解(select、WSAEventSelect、WSAAsyncSelect) 8. Windows上的完成端口模型(
业务软件设计开发过程中会依赖一些基础组件, 事件路由就是常见的基础组件。 本模块结合业务场景, 定制了一个基本的事件路由模块。
业界错误码的规范很多,但是阅读发现这些规范各不相同,甚至很多点相悖。前段时间查了很多资料、咨询过阿里百度等几家公司的同学整理出一份材料和同事分享交流过一轮,下面是一些汇总,这里是希望各路大神们不吝赐教,一起整理出一份最佳实践。
Download WMI Code Creator v1.0 from Official Microsoft Download Center
C 语言是一门面向过程的编程语言,通过一个又一个函数,把计算、过程控制等逻辑,包装成一个个独立的处理单元。
这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。 本文涉及的平台包括windows和linux,下面开始啦。 一、非阻塞的的connect()函数如何编写 我们知道用connect()函数默认是阻塞的,直到三次握手建立之后,或者实在连不上超时返回,期间程序执行流一直阻塞在那里。那么如何利用connect()函数编写非阻塞的连接代码呢? 无论在win
这些年,接触了形形色色的项目,写了不少网络编程的代码,从windows到linux,跌进了不少坑,由于网络编程涉及很多细节和技巧,一直想写篇文章来总结下这方面的心得与经验,希望对来者有一点帮助,那就善莫大焉了。 本文涉及的平台包括windows和linux,下面开始啦。 一、非阻塞的connect()函数如何编写 我们知道用connect()函数默认是阻塞的,直到三次握手建立之后,或者实在连不上超时返回,期间程序执行流一直阻塞在那里。那么如何利用connect()函数编写非阻塞的连接代码呢? 无论在wind
作者:谢代斌 研究测试TCP断开和异常的各种情况,以便于分析网络应用(比如tconnd)断网的原因和场景,帮组分析和定位连接异常掉线的问题,并提供给TCP相关的开发测试人员作为参考。 各个游戏接入都
系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。一个Tick的时长可以静态配置。
从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。
有用户反馈电脑启动时,屏幕突然出现错误码0xc0000428,无法进入系统。本文将针对这个问题,分析出现错误码0xc0000428的原因,并为大家提供解决方案。
错误处理指用户代码发生错误时,系统调用错误处理模块的接口函数,完成上报错误信息,并调用用户自己的钩子函数,进行特定的处理。
解绑 SSH 密钥对后,您需要重启实例(RebootInstance)使更改生效。
这篇文章从nginx的499着手,分析整个过程中是怎么产生499行为的,以及各种往返网络包出现的原因。说说我通过这个499问题一步一步分析的整个过程,不一定正确,但很有意思。
咱们引入 go generate ,可以只用定义错误码和写注释,就可以达到,当我们调用错误码的时候,能够正确的输出我们想要的错误信息
1. json格式测试: 通常我们的接口一般设计的都是传递json串,那么就需要去测试 如果传递非json的情况,这时候程序会不会正确的处理,返回相应的 error code 2. 默认值测试: 很多情况一些非必填的参数会有默认值,比如说一个查询的接口,参数count为返回查询的结果数量, 默认为10,那么就应该有一条case来测试,当然前置条件是数据库里面必须要存在这样的数据超过10条。 3. 异常类型测试: 比如上面的count参数,这个参数的类型一定是可以转换
当异常发生时,Linux内核给造成异常的进程发送一个信号,告知其发生了异常。比如,如果一个进程尝试除零操作,CPU会产生除法错误异常,相应的异常处理程序发送SIGFPE信号给当前进程,然后由其采取必要的步骤,恢复还是中止(如果该信号没有对应的处理程序,则中止)。
这些字符分类函数都是类似的,返回值都是int,假如我们用islower,如果参数是小写字母,则返回非0的随机数,如果不是则返回0.
如果传递非json的情况,这时候程序会不会正确的处理,返回相应的 error code
软件开发中遇到异常才是正常,很少有人能写出完美的程序跑在任何机器上都不会报错。但极为正常的软件异常,却经常出自不同的原因,导致不同的结果。怎么样科学地认识异常、处理异常,是很多研发同学需要解决的问题。本文作者根据自己多年的工作经验,撰写了《异常思辨录》系列专栏,希望能体系化地帮助到大家。本文为系列第一篇,本篇文章将主要聚焦异常处理的几种方式展开,欢迎阅读。
去搜错误码(可以看看日志文件里有没有),不搜不知道,一搜真香,网上大概率会有对应问题的解决教程
事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用32位无符号整型变量来表示,每一位代表一个事件。
如果一个人在工作的时候,能够看到良质,而且感觉到它的存在,那么他就是一个懂得关心的人。如果一个人对自己所看到的和手中所做的都细致入微地关心,那么他一定有某些良质的特性。---《禅与摩托车维修艺术》。
为了统一检索和规范 API,B站内部建立了一个统一的 bapis 仓库,整合所有对内对外 API。
错误码,是仅次于接口的游戏与SDK交流的工具。好的错误码就像接口设计一样可以大大降低接入成本,甚至不需要错误描述,仅仅通过错误码一眼就能大概确定问题原因。但是现实常常并不是这样的。这里主要是对开发中与错误码相关的一些细节的分析和探讨,包括错误码有几级,默认的错误返回怎么初始化一级对于第三方平台的错误码如何处理等。 错误码怎么定义 目前我们的接口的调用结果只有一级。因此有时候调用完一个接口以后,游戏处理的内容就会很多。有些游戏很勤快,他愿意处理各种细分的错误和异常,但是有些游戏比较懒,他其实不想去处理的,于是
云审计服务支持删除已创建的追踪器。删除追踪器对已有的操作记录没有影响,当您重新开通云审计服务后,依旧可以查看已有的操作记录。DELETE /v1.0/{project_id}/tracker无无无请参见错误码。
Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、全局异常处理、自定义异常错误码等功能,使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。
一、系统调用概述 系统调用是受控的内核入口,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。Linux 内核以 C 语言语法 API 接口形式(头文件),提供有一系列服务供程序访问。可以通过 man 2 syscall 查看系统调用信息。 关于系统调用,需要注意以下几点: 1、系统调用将处理器从用户态切换到核心态,以便 CPU 访问受到保护的内核内存; 2、系统调用的组成是固定的,每个系统调用都由一个唯一的数字来标识; 3、每个系统调用可辅之以一套参数,对用户控件(进程虚拟地址控件)与内核空间之
node-mkdirp是一个linux命令 mkdir -p的node版本,也就是创建多级目录。node-mkdirp值得新手学习的地方在于学习对于错误码的利用和基本的API使用。我曾经也写过一个创建多级目录的方法,不过自己都只是通过split方法对目录分隔开后逐层判断是否存在,再创建。node-mkdirp的方式则是通过fs.mkdir的错误码来判断,挺巧妙的。
2018年的第一天,祝大家365天元气满满! 话不多说,先打响新年第一炮(不好意思,我又污了=.=) ***本系列内容仅用于技术分享,请勿对号入座*** 之前有讲过要分享一些云平台渗透的经验,其中最有意思的就属这个python shell了。 首先经过fuzzing发现了这样一个console口: 根据路径判断,这个应该是python的交互式shell,也就是我们平时在cmd命令行敲“python”之后出来的一个console,试了一下,果然是: 📷 但是执行系统命令的时候就返回不正常了,要么是0,要么是2
在调用环信IM SDK中的注册与登录接口前,需要先进行初始化,如下所示,其中appkey在控制台应用详情中获取:
Availability --设备的状态 Caption --对象的简短描述 ConfigManagerErrorCode --Win32的配置管理器错误代码。 ConfigManagerUserConfig --如果为TRUE,该控件是使用用户定义的配置 CreationClassName --所在的类(Win32_SoundDevice) Description --对象的描述 DeviceID --对象与系统中的其他设备的唯一标识符 DMABufferSize --大小直接内存访问缓冲区。 ErrorCleared --如果为TRUE,报告最后错误码现已清除 ErrorDescription --提供关于最后错误码可能采取的纠正措施记录的详细信息 InstallDate --日期和时间对象安装。 LastErrorCode --报告的逻辑设备上一个错误代码。 Manufacturer --获取制造商 MPU401Address --开始分配到声音设备的MPU-401端口I/ O地址。 Name --获取设备的名称 PNPDeviceID --即插即用逻辑设备的播放设备标识符。 PowerManagementCapabilities --逻辑设备的特定功率相关的能力阵列。 PowerManagementSupported --如果为TRUE,该装置可以是电源管理(可以投入挂起模式,等等) ProductName --声卡的产品名字 Status --对象的当前状态 StatusInfo --设备的逻辑状态信息 SystemCreationClassName --该作用域计算机的创建类别名称属性的值。 SystemName --系统名称
EasyStreamClient是一套非常稳定、易用、支持重连的StreamClient工具,以SDK形式提供, 接口调用非常简单。我们前期通过EasyStreamClient对接海康流媒体V4.X实现了无插件播放,在之前的博文中,我们也分享了SDK对接的关键函数以及错误码定义,本文我们分享一下对接海康流媒体V4.X SDK 结构体的定义。
中断,英文名为Interrupt,计算机的世界里处处都有中断,任何工作都离不开中断,可以说整个计算机系统就是由中断来驱动的。那么什么是中断?简单来说就是CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务,这一过程便是中断。
软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。
发布于 2020-01-08 14:13 更新于 2020-01-08 07:05
在数据库查询中,我们主要使用的SQL语句,但是之前也说过,SQL语句需要经历解释执行的步骤,这样就会拖慢程序的运行速度,针对一些具体的简单查询,比如根据用户ID从用户表中查询用户具体信息,像这样的简单查询OLEDB提供了专门的查询接口。使用该接口可以很大程度上提升程序性能。 另外在之前的代码中,只是简单的通过HRESULT这个返回值来判断是否成功,针对错误没有具体的处理,但是OLEDB提供了自己的处理机制,这篇博文主要来介绍这两种情况下的处理方式
上面介绍了错误码的一些知识,这一部分讲开发中是如何使用 自定义错误函数来处理错误信息的。为了演示,我们新增一个根据手机号获取验证码的 API:
最近在做一个和前端、第三方平台(可以简单理解为公司别的部门或者客户软件)直接交互的服务,涉及到用户注册、登录、数据处理等模块。架构图大概如下:
1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup WSADATA wsaData; err = WSAStartup(0x202,&wsaData); if ( err != 0 ) { return 0; } else if ( LOBYTE( wsaData.wVersion )
很多使用堡垒机来连接外网的企业,在使用过程中都可能会遇到各种各样的报错,而错误码110是报错中经常出现的代码,很多朋友不知道为什么会出现这样的错误码,那么服务器堡垒机错误码110的原因是什么?错误码110如何解决呢?
我们知道网页有他的状态码,比如最常见的404,500。都有他自己的含义,但是,在MySQL数据库里面也有他们的一个错误码,相信很多同学见过但是没有注意到吧。很多时候,进行数据库操作的时候,会提示错误,但是大部分同学都会选择直接重写语句而不是先考虑如何根据错误信息来修改,其实学会看错误码,能够快速的定位自己的错误,更容易就能解决问题哦
相信大家都遇到过Error: read ECONNRESET这个错误,本文分享针对该错误的分析过程。虽然通过ECONNRESET错误码我们很容易查到这个错误意味着什么,但是通过源码和分析工具进行一次彻底的分析,会让你更加了解这个错误的产生和原理。更让人神清气爽。 本文分为两个部分,首先通过nodejs源码分析这个错误产生的原因,然后通过网络工具抓包的方式捕获这个错误。 1 源码分析 我们从建立一个tcp连接成功后,nodejs执行的操作开始分析(net.js)。
阿里的《Java开发手册》被Java开发者所拜读,基本人手一册,就在前几天(2020.04.22)发布了泰山版 - 会当凌绝顶,一览众山小,而这次发布新增了很多干货内容,在此,给大家分享一下,是时候更新你的手册了。(文末附下载地址)
errno.ErrUserPhone、errno.OK 表示自定义的错误码,下面会看到定义的地方。
我们都知道,前端通常会通过后台提供的接口来获取数据来完成前端页面的渲染,前端可以为 PC 端、M 端、小程序、APP 等。
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息(PHP 5 = 5.1.0, PECL pdo = 0.1.0)
领取专属 10元无门槛券
手把手带您无忧上云