精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-28
最后修改:2010-11-28
linliangyi2007 写道 我觉得这个问题的关键是,系统在哪个层面上拦截/处理异常?
从设计上说,层层往上抛异常,层层记录,却不处理,这样的设计有缺陷的。 底层的异常应该对上层屏蔽,外部API调用可能得到一个false或者null的结果,但不是异常本身。 1.请问底层的异常上层屏蔽的目的是什么? 2.以false和null表达异常,我觉得不合适。调用者很可能会忽略对异常的处理。 3.打印日志,我建议,catch异常的就要进行记录。在多人合作的情况下,这样的规则最容易统一,必免出现异常出现而不记录的情况。多看点日志对个程序员来说,也不算啥。 |
|
返回顶楼 | |
发表时间:2010-11-28
gdpglc 写道 linliangyi2007 写道 我觉得这个问题的关键是,系统在哪个层面上拦截/处理异常?
从设计上说,层层往上抛异常,层层记录,却不处理,这样的设计有缺陷的。 底层的异常应该对上层屏蔽,外部API调用可能得到一个false或者null的结果,但不是异常本身。 1.请问底层的民常上层屏蔽的目的是什么? 2.以false和null表达异常,我觉得不合适。调用者很可能会忽略对异常的处理。 3.打印日志,我建议,catch异常的就要进行记录。在多人合作的情况下,这样的规则最容易统一,必免出现异常出现而不记录的情况。多看点日志对个程序员来说,也不算啥。 1,2 我认为以false和null这个处理方式是个设计的败笔。忽略的话,很多人catch住一样忽略,你是防不住的。 3 人生要有追求啊,为什么要多看日志。 |
|
返回顶楼 | |
发表时间:2010-11-28
zhang_xzhi_xjtu 写道 1,2 我认为以false和null这个处理方式是个设计的败笔。忽略的话,很多人catch住一样忽略,你是防不住的。 败在何处? |
|
返回顶楼 | |
发表时间:2010-11-28
false,null是返回值,是正常流程的一部分,不是异常流。
|
|
返回顶楼 | |
发表时间:2010-11-28
最后修改:2010-11-28
zhang_xzhi_xjtu 写道 false,null是返回值,是正常流程的一部分,不是异常流。
这算总原则吧,我不反对。 不过,我想的说的是:事情要具体情况具体分析,不可教条。某些事情,算什么是分不清楚的,比如:hibernate的load和get方法,功能一样,但找不到对象时,前者会抛异常,后者返回null。 软件有规则的一面,也有复杂多变的一面,很多简单的原则在软件开发上,都是有适用范围的。在应用软件开发的指导性原则时,一定要了解它的前因后果,防止在错误的上下文下应用某个设计原则,那只能是事倍功半。 |
|
返回顶楼 | |
发表时间:2010-11-28
gdpglc 写道 zhang_xzhi_xjtu 写道 false,null是返回值,是正常流程的一部分,不是异常流。
这算总原则吧,我不反对。 不过,我想的说的是:事情要具体情况具体分析,不可教条。某些事情,算什么是分不清楚的,比如:hibernate的load和get方法,功能一样,但找不到对象时,前者会抛异常,后者返回null。 软件有规则的一面,也有复杂多变的一面,很多简单的原则在软件开发上,都是有适用范围的。在应用软件开发的指导性原则时,一定要了解它的前因后果,防止在错误的上下文下应用某个设计原则,那只能是事倍功半。 同意你说的事情要具体情况具体分析,不可教条。 hibernate的load和get方法,功能一样,但找不到对象时,前者会抛异常,后者返回null。 这个设计不觉的很奇怪吗? 如果你不假思索的说这个好,并且以这个为参照物的话,是不是教条(迷信框架)了。 |
|
返回顶楼 | |