GO 1.20 新功能:多重错误包装

2022-12-27 14:38:56

预计将于 2023 年 2 月发布的 Go 1.20 有一个小的变化,对于那些大量使用错误包装的应用程序来说,可能会有效改进它们的错误处理方法。

让我们看一下它的用法,但首先,需要简要回顾一下什么是错误包装。如果你已经掌握了可以直接跳到下面的 “Go 1.20 新功能” 部分以获取新的信息。

Go 中的错误是实现一个非常简单的接口:


(资料图)

typeerrorinterface{Error()string}

错误类型可以是任何东西,从string本身到int,但通常它们是struct类型。下面这个例子来自标准库:

typeerrstruct{sstring}func(e*err)Error()string{returne.s}

要检查 Go 中的错误,你只需比较一个值(在本例中为int值):

iferr==io.EOF{//...}

第二种常见的用法是检查错误的类型,那也意味着要写更多的代码:

ifnerr,ok:=err.(net.Error){//...(usenerrwhichisanet.Error)}

在上面的例子中,类型断言测试类型net.Error的err值,并创建一个新变量nerr,它可以在 if 语句中使用。Go 中的错误方便理解、易于使用且非常高效。

错误包装

从 Go 1.13 开始,引入了错误包装。包装允许将错误嵌入到其他错误中,就像在其他语言中包装异常一样。这非常实用,比如函数遇到 “record not found” 错误时,可以向错误信息中添加更多上下文信息,例如 “unknown user: record not found”。

Go 中错误包装设计背后的有趣想法是:契约不用关心错误类型、结构或它们是如何创建的。而唯一关注的是解包过程和转换为字符串,因为这两者是必须的。这就非常容易实现:支持解包的错误类型必须实现Unwrap() error方法。

标准库中没有(命名的)接口可以向您展示,因为接口是隐式实现的,没有必要单独写一个。这里我们写一个只是为了更好说明这篇文章:

typeWrappedErrorinterface{Unwrap()error}

我们来看看 Go 标准库(实际上是 package fmt)中是如何实现包装错误的:

typewrapErrorstruct{msgstringerrerror}func(e*wrapError)Error()string{returne.msg}func(e*wrapError)Unwrap()error{returne.err}

由于上面错误类型实现了Error() string方法,所以说 Go 中的错误实际上最终是字符串并没有错,因此需要一种创建这些字符串的良好机制。这就是标准库中的函数fmt.Errorf发挥作用的地方:

varRecordNotFoundErr=errors.New("notfound")constname,id="lzap",13werr:=fmt.Errorf("unknownuser%q(id%d):%w",name,id,recordNotFoundErr)fmt.Println(werr.Error())

一个特殊格式的动词%w,每次调用只能使用一次(稍后会详细介绍),用于错误参数。除此之外,该函数的工作方式类似于fmt.Printf函数。下面的例子打印了这个结果:

unknownuser"lzap"(id13):notfound

如你所见,错误包装本质上是一个链表。要解包错误,请使用errors.Unwrap函数,该函数将为链表中的最后一个错误值返回nil。要检查错误类型或值,需要遍历整个列表,这对于需要进行频繁的错误检查不太实用。幸运的是,有两个辅助函数可以做到这一点。

检查包装错误列表中的值:

iferrors.Is(err,RecordNotFoundErr){//...}

检查特定类型(下面例子是来自标准库的网络错误):

varnerr*net.Erroriferrors.As(err,&nerr){//...(usenerrwhichisa*net.Error)}

以上总结了 Go 1.13 及更高版本中的错误包装。

Go 1.20 新特性

让我们看看 Go 1.20 中真正的新功能,从函数errors.Join开始,它通过可变参数包装错误列表:

err1:=errors.New("err1")err2:=errors.New("err2")err:=errors.Join(err1,err2)fmt.Println(err)

当事先不知道错误数量时,此功能可用于将错误连接在一起。一个很好的例子是从 goroutines 收集错误。值得一提的是,该函数将列表中的错误与换行符连接起来。上面的代码片段打印:

err1err2

对于许多应用程序或(日志记录)库来说,这可能会存在问题,它们期望错误通常只是没有换行符的字符串。幸运的是,Go 1.20 中的另一个变化改变了fmt.Errorf的行为:该函数现在接受多个%w格式说明符:

err1:=errors.New("err1")err2:=errors.New("err2")err:=fmt.Errorf("%w+%w",err1,err2)fmt.Println(err)

以前会导致格式错误的格式字符串现在可以正确打印:

err1+err2

同时包装多个错误实现Unwrap() error,这是可能的吗?

事实证明,在 Go 1.20 标准库中有一种新的机制: 实现Unwrap() []error函数的错误类型可以包装多个错误。让我们来看看这是如何在库中实现的:

typejoinErrorstruct{errs[]error}func(e*joinError)Error()string{//concatenateerrorswithanewlinecharacter}func(e*joinError)Unwrap()[]error{returne.errs}

一个理论上的接口,但标准库中实际不存在,如下所示:

typeMultiWrappedErrorinterface{Unwrap()[]error}

由于 Go 不允许方法重载,因此每种类型都可以实现Unwrap() error或Unwrap() []error,但不能同时实现。还记得我提到过包装错误本质上是一个链表吗?实现前一个(新引入的)方法的类型实际上形成了一个链接树,函数errors.Is和errors.As的工作方式相同,只是现在它们需要遍历树而不是列表。根据文档,该实现执行预排序、深度优先遍历。

这确实是 Go 1.20 带来的全部,它可能看起来是一个小的变化,但它提供了如何有效和干净地处理错误的新方法。在展示真实示例之前,让我总结一下新功能:

新的Unwrap []error函数契约允许遍历错误树。

新的errors.Join函数,这是一个方便的函数,用于连接两个错误字符串值(使用换行符)。

现有函数errors.Is和errors.As已更新,可以同时处理错误列表和错误树。

现有函数fmt.Errorf现在接受多个%w格式动词。实践

上面这一切都很棒,但是你如何在实践中利用它呢?

在一个小型 REST API 微服务中,我们通过errors.New和fmt.Errorf处理来自 DAO 包(数据库)、REST 客户端(其他后端服务)和其他包的各种错误。返回的 HTTP 状态代码应该是 2xx、4xx 或 5xx,具体取决于错误状态以遵循最佳 REST API 实践。实现此过程的一种方法是解开主 HTTP 处理程序中的错误并找出它是哪种错误。

然而,通过多重错误包装,现在可以包装根本原因(例如数据库返回 “no records found” )和返回给用户 HTTP 代码(在本例中为 404)。

一个工作示例如下所示:

packagemainimport("errors""fmt")//commonHTTPstatuscodesvarNotFoundHTTPCode=errors.New("404")varUnauthorizedHTTPCode=errors.New("401")//databaseerrorsvarRecordNotFoundErr=errors.New("DB:recordnotfound")varAffectedRecordsMismatchErr=errors.New("DB:affectedrecordsmismatch")//HTTPclienterrorsvarResourceNotFoundErr=errors.New("HTTPclient:resourcenotfound")varResourceUnauthorizedErr=errors.New("HTTPclient:unauthorized")//applicationerrors(thenewfeature)varUserNotFoundErr=fmt.Errorf("usernotfound:%w(%w)",RecordNotFoundErr,NotFoundHTTPCode)varOtherResourceUnauthorizedErr=fmt.Errorf("unauthorizedcall:%w(%w)",ResourceUnauthorizedErr,UnauthorizedHTTPCode)funchandleError(errerror){iferrors.Is(err,NotFoundHTTPCode){fmt.Println("Willreturn404")}elseiferrors.Is(err,UnauthorizedHTTPCode){fmt.Println("Willreturn401")}else{fmt.Println("Willreturn500")}fmt.Println(err.Error())}funcmain(){handleError(UserNotFoundErr)handleError(OtherResourceUnauthorizedErr)}

这将打印:

Willreturn404usernotfound:DB:recordnotfound(404)Willreturn401unauthorizedtocallotherservice:HTTPclient:unauthorized(401)

从这样的人工代码片段中可能看起来不太明显的是,实际上的错误声明通常分布在许多包中,并且不容易跟踪所有可能的错误以确保所需的 HTTP 状态代码。在这种方法中,所有在一个地方声明的应用程序级包装错误也包含了 HTTP 代码。

请注意,这在 Go 1.19 或更早版本中是不可能的,因为fmt.Errorf函数只会包装第一个错误。该代码确实在 1.19 上可以编译,甚至不会产生运行时恐慌,但它实际上不会工作。

显然,常见的 HTTP 状态代码很容易成为一种新的错误类型(基于int类型),因此可以通过errors.As轻松提取实际代码,但我想让示例保持简单。

Feel free to play around with the code on Go Playground. Make sure to use “dev branch” or 1.20+ version of Go. 可以在 Go Playground 上自由运行上述代码。确保使用 “dev branch” 或 Go 的 1.20+ 版本。现有应用

在你的应用程序中实施新功能时,请注意errors.Unwrap函数。对于具有Unwrap() []error的错误类型,它总是返回nil:

err1:=errors.New("err1")err2:=errors.New("err2")err:=errors.Join(err1,err2)unwrapped:=errors.Unwrap(err)fmt.Println(unwrapped)

由于 Go 1.X 兼容性承诺,这会打印出 “nil”。当你引入多个包装错误时,请确保检查展开代码。幸运的是,典型 Go 代码中的大部分错误检查都是使用errors.Is和errors.As完成的。

错误包装并不是 Go 中所有错误处理的最终解决方案。它只是提供了一种干净的方法来处理典型 Go 应用程序中的错误,对于简单应用程序来说也许就完全足够了。原文地址:https://lukas.zapletalovi.com/posts/2022/wrapping-multiple-errors/原文作者:Lukáš Zapletal本文永久链接:https://github.com/gocn/translator/blob/master/2022/w50_Wrapping_multiple_errors译者:haoheipi

校对:watermelo

往期推荐

谷歌发布查找开源漏洞的Go工具OSV-Scanner

最好的Go框架:没有框架?

「每周译Go」如何在Go中构造For 循环

想要了解Go更多内容,欢迎扫描下方关注公众号,回复关键词 [实战群],就有机会进群和我们进行交流

分享、在看与点赞Go

上一篇 :

下一篇 :

x 广告
高层声音

GO 1.20 新功能:多重错误包装

2022-12-27

世界今日报丨恩威医药(301331)12月26日主力资金净卖出1091.77万元

2022-12-27

四川路桥: 四川路桥关于2019年限制性股票激励计划首次授予部分第二个解除限售期解除限售暨股份上市的公告_环球滚动

2022-12-26

12月26日振华科技涨6.23%,易方达国防军工混合A基金重仓该股-今日要闻

2022-12-26

中汽协:1-11月销量排名前十位的SUV生产企业共销售580.2万辆

2022-12-26

这一巨头宣布:大规模召回!万元洗衣机,有起火风险?_世界时快讯

2022-12-25

记一次QQ找回经历

2022-12-25

TVB知名男星被判入狱即时服刑!未遭公司封杀,富贵女友不离不弃

2022-12-24

传化智联: 年报信息披露重大差错责任追究制度 新消息

2022-12-23

诚迈科技董事长王继平赴国家智能网联汽车创新中心交流车用操作系统合作事宜

2022-12-23

环球微速讯:【机构调研记录】中邮基金调研凯因科技、京山轻机

2022-12-23

禾信仪器: 关于召开2023年第一次临时股东大会的通知

2022-12-22

石柱县债权人撤销纠纷律师收费最新标准

2022-12-22

美股下跌不会随着今年结束止步!大摩、高盛等众多机构警告下行风险|热讯

2022-12-22

全球新消息丨穗恒运A: 2022年第六次临时股东大会决议公告

2022-12-21

中达集团控股(00139.HK)涨超14% ,截至发稿,涨11.01%,报0.121港元,成交额1705.83万港元

2022-12-21

警惕不法贷款中介诱导消费者违规转贷

2022-12-21

爱丽家居: 爱丽家居关于部分募投项目结项并将节余募集资金永久性补充流动资金的公告

2022-12-20

曾被央视邀约当主持,在结婚后双手布满皱纹,她到底付出了多少?

2022-12-20

鸿铭股份开启申购 营收净利长期稳健增长-当前快讯

2022-12-19

【世界时快讯】frm考试通过后待遇好吗?证书价值高吗?

2022-12-19

环球资讯:云图控股:12月16日融券卖出金额39.87万元,占当日流出金额的0.73%

2022-12-19

每日讯息!建安区召开巩固拓展脱贫攻坚成果日调度会

2022-12-19

美媒评NBA现役前十:字母哥居首 库里第4詹姆斯第5

2022-12-18

小麻袋借贷贷款逾期19天还不起会影响征信吗

2022-12-17

山东路桥: 关于2022年第四次临时股东大会增加临时提案的公告

2022-12-16

全球最资讯丨木胶合板模板规格标准 「3公分厚的木板价格」

2022-12-16

环球观点:欧克科技:公司正在研究开发锂电隔膜设备,目前该方面设备也已经取得相应合同订单,该项目目前进展顺利

2022-12-16

蓝帆医疗(002382.SZ)拟非公开发行股票部分募投项目取得《企业境外投资证书》_环球快播报

2022-12-15

工行平顶山分行全面启动员工系列培训 速讯

2022-12-15

头条焦点:万事利:12月14日获融资买入144.14万元,占当日流入资金比例8.98%

2022-12-15

欧克科技: 关联交易管理制度 每日短讯

2022-12-14

高度重视 抓住关键 把防汛工作抓紧抓实抓好|速讯

2022-12-14

珠海冠宇(688772)12月13日主力资金净卖出5237.10万元

2022-12-14

金徽股份(603132):金徽矿业股份有限公司董事会秘书辞职及聘任副总经理兼董事会秘书

2022-12-13

每日快看:顺丰:参投基金投资光伏、储能、氢能等领域

2022-12-13

全球连线|“赣鄱味”溢满中国角 从“江西日”看中国生态保护成果 环球微速讯

2022-12-12

用世界通用的艺术语言,塑造当代中国青年形象 中国青年带着艺术“走出去”-天天速讯

2022-12-12

捷捷微电(300623)106.41万股限售股将于12月12日解禁上市,占总股本0.14%

2022-12-11

天天观热点:大博医疗:主要是销售额的增加所致

2022-12-09

全球热文:20余家A股上市公司赴瑞交所GDR上市 跨境转换机制运行平稳顺畅

2022-12-08

环球动态:股票行情快报:华泰证券(601688)12月6日主力资金净卖出305.66万元

2022-12-06

粤上半年人均收入超2.47万 八大类消费增速“五升三降”

2022-07-18

一张陌生人的图片“活化”成为视频? 深度合成正瓦解“眼见为实”

2022-06-20

宁夏将村居法律顾问工作纳入法治政府考核

2022-03-18

律师兼任调解员 不打官司解纠纷

2022-03-18

青海2022年上半年英语四级报名时间:3月15日至3月18日

2022-03-18

人生第一桶金、与学业冲突……学生代购的“苦”与“乐”

2021-11-12

辽宁大连发布10日新增21例本土确诊病例行程轨迹

2021-11-12

纤维素制成闪光材料无毒可降解 或彻底改变化妆品行业

2021-11-12

新冠疫情期间 海洋中或堆积2.8万吨相关塑料废物

2021-11-12

开屏广告又现新花招,换个马甲就重来?

2021-11-12

对不合理教师资格认定标准,该全面清理了

2021-11-12

虚假宣传、以次充好 直播间商家“放水”让消费者闹心

2021-11-12

“扫码抽手机”实则是广告 快递单广告是谁发的?

2021-11-12

北京市本起疫情部分确诊病例病毒全基因组测序已完成

2021-11-12

辽宁大连本轮疫情病毒为德尔塔变异株 24个区域划定为中风险地区

2021-11-12

西安市鄠邑区太平峪首次发现野生川金丝猴踪迹

2021-11-12

成都停业整顿56家零售药店 买感冒药需提供身份证

2021-11-12

大连市启动第二轮全员核酸检测

2021-11-12

浙江衢州发现的西周墓葬群或为“姑蔑王陵”

2021-11-12

大连本轮疫情为德尔塔变异株

2021-11-12

大连:本轮疫情病毒载量高、传染性强 代际传播为2天左右

2021-11-12

25名干警获云南“最美政法干警”表彰

2021-11-12

甘肃凝聚“她力量”:互助抗疫,女人更懂女人心

2021-11-12

甘肃戈壁的“明星劳模”:自编自导让每一个工人唱“主角”

2021-11-12

跨越千山万水 浙江爱心“温暖”新疆沙雅孩子

2021-11-12

“钢轨神探”启5大铁路大动脉9300公里冬季“诊疗”

2021-11-12

重庆把接种点“搬”进小学,8岁学生:“我不怕疼,打疫苗是为抵抗病毒”

2021-11-12

四川绵阳:一男子酒后报警谎称自己是“黄码”被行拘10天

2021-11-12

民航局对多个入境航班发出熔断指令

2021-11-12

疫情中轮椅上的“逆行者”:想为大家做力所能及的事

2021-11-12

上海警方:“三无产品”借短视频平台引流诈骗近千名受害人

2021-11-12

山西搭建交通事故重伤员无差别急救绿色通道 累计救助7727个受困家庭

2021-11-12

三万余尾“水中大熊猫”放流新疆博斯腾湖(图)

2021-11-12

大连新增11个中风险地区

2021-11-12

陕西科技大学开设“酿酒课” 培养学生知行合一

2021-11-12

辽宁大连:今日新增十一个中风险地区

2021-11-12

“双十一”南京的猪都“脱单”了?其实还有更让人嫉妒的……

2021-11-12

内蒙古警方悬赏20万缉凶扎兰屯重大刑事案嫌疑人

2021-11-12

“帅府主题系列甜品”发布:孙中山喜食“牛奶煮苹果” 宋庆龄爱吃蛋糕

2021-11-12

江苏徐州“家门口车管所”便民服务驶入“高速路”

2021-11-12

重庆市发出今年秋冬季首次空气污染应对工作预警

2021-11-12

全国道德模范|深藏功名三十载 化作春蚕报乡亲——一名抗美援朝老兵的人生选择

2021-11-12

湖南桃江“花痴”男子盗窃六盆盆栽落法网

2021-11-12

成都25位民辅警的“封闭”生活:有人“转行”送外卖 有人变身“仓鼠管理员”

2021-11-12

2022年江苏中小学:体育教师师生比将达1:220

2021-11-12

国内首次!成都发布公园城市银杏观叶指数

2021-11-12

江苏学生体质健康监测报告:“小眼镜”“小胖墩”问题突出

2021-11-12

被拐17年 湖北宜昌警方助男子与家人团圆

2021-11-12

福建柘荣发现1例境外输入复阳病例 四名密接者核酸检测为阴性

2021-11-12

内蒙古额济纳旗达来呼布镇调整为低风险地区

2021-11-12

内蒙古现有本土确诊病例32例 伊金霍洛旗确诊病例清零

2021-11-12

交通陆续恢复 内蒙古通辽生产生活秩序逐步恢复正常

2021-11-12

选矿工技师的创新路:从废旧场“寻宝”到多技术攻关

2021-11-12

海外传播官体验宁波“十里红妆” 赞其“让人震撼”

2021-11-12

山西中小学幼儿园基本实现“4个100%”达标建设

2021-11-12

走近张家界“奇峰守护者”

2021-11-12

新华全媒+丨黑龙江黑河:他们在寒冬中战“疫”

2021-11-12

山东日照第一批五莲县外解除隔离人员返家 将继续进行7天居家健康监测

2021-11-12

中央气象台:未来几天我国大部天气将趋稳 东北雨雪进入尾声

2021-11-12

云南西双版纳:巾帼护村队化身边境村寨守护者

2021-11-12

乘客自发合力推车 “119”为“120”抢出一条急救通道

2021-11-12

中老联合考古队探索青铜冶炼遗址奥秘 结下“深厚情谊”

2021-11-12

黑龙江:抢修人员彻夜冒雪“破冰” 高铁列车逐步恢复运行

2021-11-12

内蒙古通辽:交通陆续恢复 生产生活秩序逐步恢复正常

2021-11-12

中国石油在京系统全面进入应急状态

2021-11-12

记者手记:采访他们10分钟,我的手都快冻僵了

2021-11-12

云南瑞丽畹町镇国防街片区调整为中风险地区

2021-11-12

女儿与父母失散18年 黔滇两地警方携手让爱“团圆”

2021-11-12

北京朝阳新增2名确诊病例 152名密接均已管控

2021-11-12

听冬奥制服设计师贺阳讲述“水墨长城”灵感从何而来

2021-11-12

纸短情长:一封道歉信“温暖”一座小城

2021-11-12

能订货还给免费代购 便民菜车如何办成“五年老店”

2021-11-12

买的床收货变清洁膏 小心收钱不发货的“跑路”电商

2021-11-12

北京:在京单位加强会议活动管理 提倡视频开会

2021-11-12

调查显示甘肃民众对战疫有信心

2021-11-12

手机APP自动续费这个“坑”该咋填?专家支招

2021-11-12

奔跑在无声世界的“李慢跑”:不走捷径才是最快的捷径

2021-11-12

北京海淀1地升为中风险 确诊病例轨迹涉地铁、小学

2021-11-12

“疫”下城市的邻里生活,不再是“相顾无言”

2021-11-12

未售出“空置房”需交物业费吗?法院判决开发商应按合同支付

2021-11-12

甘肃妇联发挥“联”字优势 近20万女性化身抗疫志愿者

2021-11-12

双十一快件“爆仓”来袭 投递服务成“投诉大户”

2021-11-12

辽宁:雪灾致640.50万头(只)畜禽死亡

2021-11-12

中国青少年抑郁检出率超2成 学生健康体检要筛查!

2021-11-12

清华贫困生“树洞里”装着励志之外的三重价值

2021-11-12

我国境内首宗个人破产清算案裁定

2021-11-12

夫妻档盗版黑手伸向《扫黑风暴》 警方:莫把盗版视商机

2021-11-12

深圳“医保药价通”上线 医保药品价格一键可查

2021-11-12

29岁父亲“割肝救女” 8月龄“小黄人”重获新生

2021-11-12

452支团队参加第二届海峡两岸(福州)职工创新创业创造大赛

2021-11-12

守护孤残儿童25年 她为2000多个孩子撑起一片天

2021-11-12

“双十一”来临 快递强市浙江金华加强“人物并防”

2021-11-12

江苏实施全生命周期监管将危废源头“一网打尽”

2021-11-12

不拘一格降人才 摘下有色眼镜看“第一学历”

2021-11-12

确诊患者曾就诊 北京东直门医院东城院区和国际部停诊

2021-11-12

云南10日新增2例本土确诊病例

2021-11-12

大数据分析表明昆虫多样性与碳排放密切关联

2021-11-12

将传统“家事”上升为重要“国事” 筑好育人的起点和基点

2021-11-12

档案人才培养现状:精通全流程的复合型人才较紧缺

2021-11-12

“献身航空事业,不是一阵子,而是一辈子”

2021-11-12

进博会:05后走上台前【最年轻“小叶子”仅16岁】

2021-11-12

高山峡谷里的“背包队”再出发

2021-11-12

高校师生科技抗疫 “彩虹丝口罩”让新冠病毒“迷路”

2021-11-12

当心“贴牌”!一些知名品牌授权商品质量存隐忧

2021-11-12

设立门店、科技赋能……“双十一”快递小哥这样送件进村

2021-11-12

疫情期间线办公需求猛增 AI刷新用户办公体验

2021-11-12

快递面单屡成“泄密单” 快递小哥如何为个人信息添把“锁”?

2021-11-12

冰雪中,有这样一群铁路人

2021-11-12

砒霜有望靶向精准治疗白血病

2021-11-12

珍视传统村落的精神文化价值

2021-11-12

“买买买”喧闹中,关注“不买组”的理由

2021-11-12

群众投诉279次置之不理 四川一家造纸企业缘何任性

2021-11-12

匿名社交真能找到“灵魂伴侣”吗

2021-11-12

教唆胁迫未成年人盗窃电动车 广西南宁警方抓获6人“拆车党”

2021-11-12

河北辛集市新增确诊病例3例 现有病例已治愈1例

2021-11-12

艰苦创业 团结协作——红旗渠精神述评

2021-11-12

新疆棉花专场新闻发布会侧记:“花开如雪海,人间免寒穷”

2021-11-12

历时14个月上万道工序 上海“爷叔”手工打造蒸汽小火车登上拍卖台

2021-11-12

河南一日新增13例本土确诊 省会6区展开第二轮全员核酸检测

2021-11-12

兰州“防疫网”基层抗疫干部的“十二时辰”

2021-11-12

王少杰:守护北京站辖区平安的“拼命三郎”所长

2021-11-12

清华贫困生“树洞”刷屏 “热源”不仅是“感动”

2021-11-12

四川成都:中高风险区周边区域酒吧、棋牌室等暂停开放

2021-11-12

大连公布新增21例确诊病例详情及轨迹 一名住校高中生确诊

2021-11-12

那年今日 | 哪一年的11月12日让你最难忘?

2021-11-12

云南新增1例本土确诊病例

2021-11-12

石家庄8770人核酸检测结果均为阴性

2021-11-12

创历史新高 11月1日—11日全国处理47.76亿件快件

2021-11-12

生动展现人与自然和谐共处

2021-11-12

喝上放心水 日子更甜美

2021-11-12

下“绣花”功夫,破解停车难

2021-11-12

就业 夯实民生之本

2021-11-12

歇人不歇店涉嫌违规 餐饮从业者可分时共享店铺吗?

2021-11-12

江西无新增本地确诊病例 新增无症状感染者2例

2021-11-12

新疆英吉沙“足尖舞者”逐梦老技艺 探索新传承

2021-11-12

预付款抢购却多花冤枉钱,“双十一最低价”都是套路?

2021-11-12

雪花放大100倍是什么样?小伙坚持15年拍雪花走红网络

2021-11-12

河北辛集市封控村已达97个、封控小区已达127个

2021-11-12

战地摄影师张崇岫:在长津湖一边躲子弹一边按快门

2021-11-12

近期去过北京朝阳这些场所的人员 请立即报告

2021-11-12

情感诈骗、个人隐私泄露……警惕“匿名社交”潜在风险

2021-11-12

内蒙古通辽市积极应对暴风雪天气

2021-11-12

吉林省新增本地确诊病例1例,为吉林市报告

2021-11-12

清华贫困生“树洞”为何让人感动?

2021-11-12

“草原母亲”都贵玛和她28个“国家的孩子”

2021-11-12

河南新增本土确诊病例12例 新增本土无症状感染者1例

2021-11-12

河北新增确诊病例2例 均在辛集市

2021-11-12

黑龙江新增本土确诊病例5例 均在黑河市爱辉区

2021-11-12

辽宁新增52例本土确诊病例 新增5例本土无症状感染者

2021-11-12

云贵等地多阴雨 东北部分地区最低气温创下半年来新低

2021-11-12

云南贵州多阴雨天气 全国其他大部地区以晴到多云为主

2021-11-12

吉林市新增一本土无症状感染者 轨迹公布

2021-11-12

北京新增6例本土确诊病例和1例无症状感染者

2021-11-12

浙江省台州市:从文明出发 让幸福落脚

2021-11-12

没有视频监控、目击证人……工地上意外受伤怎么作证

2021-11-12

吉林省吉林市:人民建城惠人民

2021-11-12

银川一小区调整为低风险地区

2021-11-12

北京朝阳连夜“快查严控” 采取果断措施阻断病毒传播链条

2021-11-12

返回顶部