真是怕了那些用异常捕捉却不抛出错误的人了!

2020-01-09 20:12:51 +08:00
 LiuSha

这两天在改别人写的代码,要增加新的功能,但真是改得太痛苦了,因而想吐槽一下。

唉,说完了,明天还得接着改。

7359 次点击
所在节点    程序员
49 条回复
pmispig
2020-01-10 11:30:21 +08:00
@hdbzsgm catch Exception 我不反对,问题是你得把异常堆栈抛出来呀,这样直接吃掉了,谁知道底层是什么原因呢。。
BBCCBB
2020-01-10 11:35:10 +08:00
@hmxxmh 我不信加上 type hints 还恼火
neoblackcap
2020-01-10 13:06:19 +08:00
因为绝大多数人是不知道错误应该怎么处理。
举个例子,比如我要处理一下 Excel 文件,然后往里面写入一个名为报告的工作表。
第一步 Excel 文件就不存在,应该如何处理?

很多人受不能抛出异常,不能抛出错误的说法影响。好像程序一直跑着就是正常的,就是没有 bug。
其实有问题不能处理就应该往上层抛,尽量保持事发当时的环境。这样才是正常的做法。假如最上层都不能解决的,那么就应该赶紧打日志然后崩溃。阻止进一步的错误发生。

正是因为不了解错误处理,所以才那么多那么多空的异常处理,仅仅为了糊弄编译器。
rioshikelong121
2020-01-10 13:35:37 +08:00
Let it crash.
augustheart
2020-01-10 13:39:41 +08:00
其实这种情况下很多时候是不知道怎么处理吧……
要是每个错误都一定有合适的处理方法,一个个处理都没问题,但是问题是相当多的异常根本无从处理,直接崩了拉倒……
stevenkang
2020-01-10 13:57:23 +08:00
恕我直言,业务层面处理异常就是渣架构。明明可以靠架构来处理,非得每个业务点都来 try catch 一把。
CallMeReznov
2020-01-10 14:04:11 +08:00
我自己写的 python 到是直接 try 所有
不过如果用到线上的话 不精确捕捉的确说不过去吧
RYAN0UP
2020-01-10 14:05:20 +08:00
同,前公司某同事吧几百行代码写在 try 里面却不处理异常,不打印堆栈。
Achiii
2020-01-10 14:12:54 +08:00
想去写 py
miaoxia
2020-01-10 15:07:45 +08:00
见过最崩溃的代码,就是用 try-catch 当作业务判断,catch 到不同的 exception 处理不同的业务
因为这事儿大吵一架
luckylo
2020-01-10 15:15:05 +08:00
我来说一句吧。 一个类 11K 行代码 。 一个函数 四五百行 代码,基本没注释。 Java
hmxxmh
2020-01-10 15:48:49 +08:00
@BBCCBB 类型注解是 3.6 版本之后才有的吧,好像返回类型啥的只能自我约束,程序不会去判断。。。,而且很多项目还是 2.7 的
AS4694lAS4808
2020-01-10 15:56:45 +08:00
给自己挖的坑,本来想写个小测试工具,catch 块就直接空着了。后来忘了并且把这个功能合并到生产版本。。花了几天在线上找问题,找到后差点打死自己。。
BBCCBB
2020-01-10 16:32:50 +08:00
@hmxxmh 嗯嗯, 3.5 开始加的..
arrow2015
2020-01-10 18:36:52 +08:00
我司代码有安全规范,不让 catch 中打印堆栈错误信息。
Biscuits
2020-01-10 18:39:14 +08:00
每次我想吐槽同事的时候就会想到:我怎么会和他是同事的?
sessionreckon
2020-01-10 18:43:49 +08:00
这种还好吧...
来了头条之后,我才发现原来代码可以写的那么烂
if else 里面的代码有的是不能跑的,class 没有定义,对象没有定义,func 不存在
大部分看起来都是代码在迭代的时候,原来的代码不删导致的,维护者知道进不去就不管了
所以代码在 IDE 上到处飘红...
但是又不是不能用,Python 跑的挺正常的....
LiuSha
2020-01-10 20:21:57 +08:00
@sessionreckon 大厂也会有这种情况吗。。。
MonoLogueChi
2020-01-10 20:27:39 +08:00
我以前也经常这么做,就是为了程序运行的时候不被卡死了
darrenfang
2020-01-11 09:25:29 +08:00
@pmispig #10 我司上古代码连 log 都没有,哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636626

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX