Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

不要让程序跑到崩溃

  好的程序应该是考虑并处理掉所有业务层的异常。比如写一个函数,那么这个函数就应该在被传入任何参数时都不出现无法处理的异常。强类型语言很容易解决,因为参数本身就可以限制类型,如果类型错误的话直接编译不通过。但是弱类型语言中的异常处理就恨容易被大家忽略。
  很多程序都是只要传入的类型出错或者值超出能接受的范围就抛出无法处理的异常。虽然都是异常,但这样会让使用方变得难以调试。而且,让程序自己跑到挂本来就是一件很危险的事情,甚至会污染持久化数据层。举个例子吧?假如一个程序接收两个参数并且要在数据库的两张表中分别写两条记录。然而由于各种原因此处没有使用事务。这时要是使用方传错了数据类型导致其中一个表写入失败,那么数据库就被污染了。虽然这个例子也有些不太恰当,但总之就是程序应该尽可能地预料业务层的异常。
  我强调「业务层」,是因为如果考虑所有级别的异常,那程序写下来就会无比巨大。考虑到哪个范围的异常得看具体的业务场景。比如一些小型的服务器程序中,我肯定不会在每次写文件时都考虑遇到磁盘空间满之类的问题而写不了文件的情况。
  另外,我觉得调用参数类型和值范围这种程度的异常处理不应该由业务层来做。如果每个业务都自己写这些处理,不仅可能漏掉,而且会让开发的工作量增加,还会增大整个程序的体积。理想的处理方式应该由框架层来提供这些异常处理的工具,然后业务层使用这些工具即可。比如对于支持装饰器的语言可以给类的方法添加装饰器,在装饰器的参数中配置这个方法接收的数据类型和异常的处理方式。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^