在案件管理和工作流系统中,这似乎来了很多。 需要提供每个业务消息的完整列表中的“系统”,并提供其可能原因(S)和纠正措施(S)。
一个供应商的例子就是甲骨文:他们所有的错误有一个命名约定(如ORA-00237),他们记录了每一个可能的ORA-XXXXX错误)。
你怎么“任务”这在开发过程中不会产生对球队造成不适当的负担? 例如问题域会像贷款申请,企业报税程序,判定合格的为授权程序等软件..
在案件管理和工作流系统中,这似乎来了很多。 需要提供每个业务消息的完整列表中的“系统”,并提供其可能原因(S)和纠正措施(S)。
一个供应商的例子就是甲骨文:他们所有的错误有一个命名约定(如ORA-00237),他们记录了每一个可能的ORA-XXXXX错误)。
你怎么“任务”这在开发过程中不会产生对球队造成不适当的负担? 例如问题域会像贷款申请,企业报税程序,判定合格的为授权程序等软件..
对于通过自己的应用程序引发的错误,通常的解决办法是有这样的错误消息的表:
create table errors
( error_no integer primary key
, error_text varchar2(200)
, error_cause varchar2(4000)
, error_action varchar2(4000)
);
一个典型的条目可能是:
insert into errors (error_no, error_text, error_cause, error_action)
values (479, 'End date cannot be earlier than start date',
'A start date and an end date were entered where the end date was before the start date, which is not allowed.',
'Correct the start and end dates and retry.'
);
然后在你的代码中处理例外是这样的:
if p_start_date > p_end_date then
error_pkg.raise_error (479);
end if;
该计划将这样做:
procedure raise_error (p_error_no integer)
is
l_text errors.error_text%type;
begin
select error_text into l_text
from errors
where error_no = p_error_no;
raise_application_error(-20001, l_text);
end;
最终用户将看到类似这样的:
ERROR 479: End date cannot be earlier than start date
这然后可以抬起头来,以获得事业和行动的细节。
更高级的版本将允许在消息中显示的数据值,这样在错误文本中使用占位符:
insert into errors (error_no, error_text, error_cause, error_action)
values (456, 'Invalid action code: [1]',
'An invalid action was specified', 'Correct the action code and retry.'
);
error_pkg.raise_error (456, p_act_code);
这是reqirements的reasonale总结?
在一个理想的世界,我想使用某种类型的注释和/或注射技术来管理整个事情。 不过,我不能想办法,以确保uniquifiers稳定一段时间,而不需要开发商来参与。 当开发人员refactors一些代码,改变其位置, 并在文本修正了一些错别字这是不平凡的发现它的“相同”的错误消息。
所以我想回到我的(很)旧的做法:
1)。 设计为uniquifiers CCC-MM-NNN合适的粒度。 CCC是应用标识符,MM一些“模块”可能是在比Java包层次结构的叶更高的水平。 NNN是一个序列号。 对于每一个MM具有包含为每个消息静态常量一类。
// conceptually like this, but perhaps done with enums or annotations
static final MessageUniquifier CCC_MM_123 = new MessageUniquifier("CCC_MM_123);
2)。 有记录的API
Logger {
public void logError(MessageUniquifier id, String message) ...
这种方法的效果