rpc结构错误

团队成员在使用以下代码时遇到了麻烦:


 void extractData(String targetUri) { Path tempFile = createTempFilePath(); extractDataToPathAndUpload(tempFile, targetUri); cleanUp(tempFile);  }  void extractDataToPathAndUpload(Path tempFile, String targetUri) { try (FileOutputStream stream = createOutput(tempFile)) { // extract from db to file stream database.readTable(TABLE_1, stream); // upload the temp file to the destination uploader.upload(tempFile, targetUri); }  } 

上面的代码经过编辑和简化,使您对问题有所了解。 我们有一个数据库,一个临时临时文件要写入以及一个上载过程。

问题在于上upload呼叫只是无法正常工作。 真令人沮丧!

老鹰眼的读者可能会发现,在进行上upload调用时,由第二个函数内的OutputStream写入的临时文件尚未关闭。 那是个错误,解决方法是将调用uploadtry-with-resources块之外,该块的工作是关闭流,从而释放文件(至少在Windows上,您不能读取您也在写的文件!)。

错误不是那样!

这是一个很难发现的错误,是结构决策的结果。 上传调用属于导出操作之外的原因不仅是为了确保流关闭,还因为它是整个过程的另一个阶段。 该过程应该是:

  • 创建临时位置

    • 导出到临时位置
  • 清理临时位置

这里的缩进反映了作用域。

上面的实现合并了两个中间步骤,甚至似乎将上传操作放在了导出内部。 这是一个结构性错误。

有一个论点是,上面的代码应该被编写为三个函数,而不是两个:

  • 一种功能,用于管理临时文件,然后调用...
  • 下一个调用导出,然后上传的函数
  • 导出功能

这是一个很好的例子,说明在正确使用结构上获得一些额外的精度会减少难于发现的错误将我们赶走的可能性。

翻译自: https://www.javacodegeeks.com/2019/10/the-structural-bug.html

rpc结构错误

rpc结构错误_结构性错误相关推荐

  1. 远程连接 错误 内部错误_关于错误的性质和原因。 了解错误因素

    远程连接 错误 内部错误 Back in 2012, I was a young[er] product designer working in a small tech agency in Vale ...

  2. java 主动抛出 段错误_段错误产生的原因~

    原文:https://blog.csdn.net/qq_29350001/article/details/53780697 一.什么是段错误? 一旦一个程序发生了越界访问,cpu 就会产生相应的保护, ...

  3. java 主动抛出 段错误_分段错误的原因?

    我在C中为扫描程序编写了一些代码,但我一直收到分段错误 . 奇怪的是,分段错误发生在代码完成时 . 我认为它与我的扫描功能和 file.get() 的使用有关,但这不会导致代码的那一行出现分段错误吗? ...

  4. mysql连接10061错误_数据库连接错误出现10061是怎么回事?

    展开全部 数据库连32313133353236313431303231363533e4b893e5b19e31333363396461接错误出现10061解决方法如下: 1.在服务端MySQL文件夹下 ...

  5. python连接sql server报20002错误_数据库连接错误:20009, b'DB-Lib error message 20009

    本地连接数据库没问题, 在 AWS 服务器上连接数据库时,报数据库连接错误: 20009 环境是 python3.5 用的是 pymssql 连接的 MS SQLServer Traceback (m ...

  6. sql 避免除0错误_设计简历时避免这3个常见的UX错误

    sql 避免除0错误 重点 (Top highlight) Having a great looking resume on hand is very important when you're lo ...

  7. NodeJS_08_art-template子模板与模板继承_MongoBooster_express-session_三大类中间件_全局错误处理

    NodeJS七天课程学习笔记_第8天 Blog综合案例 Blog 综合案例 (包含注册.登录.修改密码.注销.发布.分页列表.评论.个人中心.上传头像等) 课程内容概要: 1. 介绍art-templ ...

  8. java中错误的源文件,关于Java源文件结构规则,说法错误的是()A.版权信息必须在java文件的开头B.package语句在imports...

    关于Java源文件结构规则,说法错误的是()A.版权信息必须在java文件的开头B.package语句在imports 更多相关问题 霍乱患者产生"米泔样"粪便由下列哪种致病因素直 ...

  9. 以下关于android应用程序的目录结构,以下关于Android应用程序的目录结构描述中,错误的是哪个()...

    以下关于Android应用程序的目录结构描述中,错误的是哪个() 更多相关问题 吸收实验中,塔底塔顶气相中二氧化碳的浓度采用( )测量. <国际海上避碰规则>适用于: 人的好奇心和强烈的求 ...

最新文章

  1. python用电度数设计_Python时间序列预测实战(电力负荷预测)
  2. 效率提升3倍的Paper阅读方法
  3. java用户注册代码解析_java springmvc 注册中央调度器代码解析
  4. 小学生计算机课堂实践的重要性,小学《信息技术》有效课堂教学的实践与研究课题方案...
  5. 高仿快递100--实战之RadioGroup和RadioButton应用
  6. 【图像增强】基于matlab同态滤波+Retinex+模糊技术图像增强【含Matlab源码 1013期】
  7. 技校计算机程序设计,如何编写技工学校计算机程序设计课程校本教材
  8. 谷歌chromeos_闲置电脑也能焕发第二春?试试谷歌 Chrome OS 操作系统
  9. 虚拟化之升级vUM组件安装
  10. 参加河北省研究生数学建模比赛有感
  11. 2022-2028全球与中国工业机械电动执行器市场现状及未来发展趋势
  12. 软考中级-嵌入式系统设计师(三)
  13. The Pilots Brotrefrigeratorhers
  14. mysql服务无法启动问题
  15. 眼睁睁的看着自己陷入“老鼠赛跑”的游戏
  16. 快速将图片变成圆角怎么弄?
  17. matlab计算膜孔径分布,应用Matlab绘制活性炭吸附等温线和孔径分布图
  18. 【云原生之Docker实战】使用Docker部署Chevereto个人图床平台
  19. 冲击双十一,我是怎么拿下蚂蚁金服的offer的,Java面试题分享
  20. 联想小新pro16 | CSGO掉帧问题解决

热门文章

  1. Xor sum HDU - 6955
  2. [CF1442 D] Sum(分治优化dp + 结论)
  3. CF407 E. k-d-sequence
  4. AT1981-[AGC001C]Shorten Diameter
  5. P6102-[EER2]谔运算【位运算】
  6. jzoj3847-都市环游【矩阵乘法】
  7. jzoj3169-[GDOI2013模拟4]生产汽车【斜率优化dp,单调队列,二分】
  8. ssl1127-方程的解数【HASH,dfs】
  9. 【做题记录】人类智慧
  10. 暗黑破坏神(ssl 2295)