因为从编程的角度,报错信息的层层转译,很有难度。
打个比方,如果我们运行一个程序,磁盘空间不够,写不了数据,报错流程如下:
a) 硬盘驱动软件报错:
扇区 0x..... 无法写入,已经重试3次了。
b) Windows/Linux 操作系统转一手,翻译成:
disk full xxx 之类的。
c) 应用软件再转一手,翻译成:
磁盘空间满,您刚才的操作,数据没有保存成功,请删除部分文件,然后再试。
就算是 Windows 操作系统,他很多组件,也是按应用软件来写的。一样有多道报错层层转译。
而报错层层转译,一直是一个大难题:
a) 很底层的报错信息,直接抛处理给用户看,用户看不懂。
b) 应用软件编程人员,转译一下报错信息,是很有必要的。
可惜,说句不客气的话,很多软件编程人员,连人际交流能力都堪忧,书面的文字,比如转译的报错信息,呵呵,不给你折腾能成日中语混合体,已经很不错了。
不能苛求。
----
当然了,我见过某著名软件公司,写的代码如下:
try
....
catch(Exception err){
save error: 数据格式错。
}
也就是,不论后台什么错,都告诉用户:数据格式错。
不服不行。
----
我也见过,有人将数据库的报错,直接放到用户操作界面:
Error: ORA-00933: SQL 命令未正确结束
然后用户一脸懵:啥玩意儿?啥叫 SQL、啥叫命令?啥叫未正确结束?
--------2023-12-13 补充,
报错层层转译,只是一方面。
另一方面,报错信息往往会推卸责任,这导致程序员们措辞也会稀奇古怪。
打个比方来说,如果一个软件报错:
Oracle 数据库报错了/网络出错,请稍后重试。
这个报错的原始信息,肯定不是 Oracle 数据库。
因为,没人主动说:这次是我错。
这点用于问题调查时,很重要。
如果错误信息是“Oracle 数据库报错了”,那报这个错的,是调用 Oracle 数据库的应用软件。Oracle 数据库不会说自己错,它只会推卸责任地说:磁盘空间满.......