-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
异常处理的规范 #9
Comments
|
支持~ @erik168 要落地的话这几样东西都要有的吧 |
@erik168 你换ID真勤……
|
那等你spec的初稿。再换一次id |
线上的异常怎么追踪到源码,sourcemap 吗? 貌似 T 和 A 有在做,不知道什么情况 |
我觉得sourcemap反向是可行的,这个必然需要工具 但从另一个角度来说,如果各种异常处理得好,抛出时的 |
一般来说线上出 bug 往往是由于 uncaught exception 吧?就是因为写代码时没考虑好才要源代码位置来帮助 debug 吧。 |
uncaught exception有2种,第一种是我们的现状,即整个儿没有异常处理,片片出错是 第二种是我们希望达到的目标,即系统本身有一些异常的控制,因此出现的异常属于“不预期会出现但作了防御措施”的,比如这样的代码: exports.get = function (key) {
if (!key) {
throw new Error('You must provide a "key" argument when get property from model');
}
return this.store[key];
}; 我们在编程的时候,防御了“ 我明白“不要防御性编码”这一原则,但这一原则从来不代表我们不要对异常状态进行控制 |
个人认为:
|
我理解sourcemap是个锦上添花的东西?不太理解啥事情是必须有sourcemap为前提设计的,以没有为前提的设计应该在有sourcemap的情况下都能工作吧?
|
因为,如果能直接通过默认错误和�定位代码行追查到错误,这样的场景就不需要进行防御式编程。 “这样的场景”大部分指的是基础lib或framework,对接受参数是否存在或类型之类 |
认可这个说法,不过还是想说明一点,防御性编程和正确的异常处理并不是一回事,很多人会误把应该做的正确的异常处理认为是防御性编程(或者纯粹只是种借口),老实说除了JS我没见过哪个语言生态圈能把异常处理做得这么烂到没边的,各种第三方库都完全不管输入异常的情况,这很大程度上直接导致了JS维护难度的提高 另外,SourceMap这东西,方向没问题但最好不要有太大的期望,要做SourceMap为基础的StackTrace反向跟踪有很多的事:
上面这3点无论哪点不是难就是烦,我不看好365天内我们可以有什么实质性的系统建设出来 |
我想就异常处理方面做一些规范和实践指导性质的工作,主要会包含:
message
的格式code
属性这么做希望的收益是:
assert.hasArgument('name', name)
而不是if + throw
message
格式,利于对异常日志的分析code
属性来分类异常,同样有助于异常的分析各位不知有什么看法?
The text was updated successfully, but these errors were encountered: