前言
函数运行结果分为两类,一类是预期的结果,一类是非预期的结果,也就是出BUG。那程序异常该如何返回呢?
正文
正常情况下,函数返回的类型是确定的,但是在异常情况下,函数返回的类型就非常多了。总的来说有以下4种方式。
1. 返回错误码
在Java、Python等编程语言中,基本都用异常来处理函数出错的情况,极少会用到错误码。
2. 返回NULL
一般来说,NULL是用来表示“不存在”这种语义,如果是查询,生成某参数之类的函数,在失败的时候是可以返回NULL的。
但也有很多人不建议返回NULL值,因为一旦返回NULL,我们在使用它的时候,忘了做非空判断,结果就很可能会报空指针异常,这是我们不愿意看到的,另外还有一个原因就是,如果大量函数都定义了可能返回NULL的这种情况,那么正常的业务逻辑里很可能会产生大量的非空逻辑判断,影响代码的可读性。
不过我认为,在某些查询,生产某个参数之类的情况,返回NULL也是一种正常的业务逻辑,那这种情况是可以使用NULL作为返回值的。
3. 返回空对象
针对返回NULL值的各种弊端,有一种经典的应对策略就是用空对象设计模式,这里不做展开。还有两种比较简单的返回空对象的方式场景就是空字符串和空集合。
当函数返回的数据是字符串或者集合类型的时候,我们可以用空字符串或者空集合来代替NULL,用来表示不存在的情况,避免空指针异常的出现。
4. 抛出异常对象
最常用的处理方式,就是抛出异常。异常可以携带详细的错误信息,比如函数调用堆栈信息。并且异常可以将正常逻辑和异常逻辑分离开来,代码可读性更好。
在一些通用模块的逻辑当中,比如某些工具类,处理失败时,可以包装一个异常进行返回,由业务逻辑层进行判断业务是否继续。
总结
程序异常时,有四种返回方式:异常码,NULL值,空对象,异常对象。大家可以根据具体使用场景,进行选择。