错误有两种。
一种是非运行时的,只能在开发阶段出现的。这需要让程序挂掉,解决掉问题才能继续运行。程序真正运行的时候是不能有这种情况的。这里就是用断言的地方。判断清楚在什么时候使用断言而不是返回错误提示很重要。一般我觉得,使用断言的地方,就是没有什么好讲的了,不应该不对,必须要对,错了必须改的地方,或者你觉得错了很low逼的问题。
一种是运行时的。这种错误是可预见的,是被逻辑判断预先捕捉到的。比如资源错误,各种等待超时,数据错误等。这需要给出提示,然后能继续运行就继续,不能的就安全退出。这里用异常捕捉或返回错误码接着后续处理。
在使用异常捕捉或返回错误码的时候,有个问题需要思考清楚。就是把问题就地处理掉,还是继续抛到上层,交给函数调用者处理。有些情况,函数调用者有特殊的处理方式,异常抛出更好。有些情况在比较高内聚的模块内的,功能实现和外界依赖关系小的,模块内自己处理掉更好。
一种是非运行时的,只能在开发阶段出现的。这需要让程序挂掉,解决掉问题才能继续运行。程序真正运行的时候是不能有这种情况的。这里就是用断言的地方。判断清楚在什么时候使用断言而不是返回错误提示很重要。一般我觉得,使用断言的地方,就是没有什么好讲的了,不应该不对,必须要对,错了必须改的地方,或者你觉得错了很low逼的问题。
一种是运行时的。这种错误是可预见的,是被逻辑判断预先捕捉到的。比如资源错误,各种等待超时,数据错误等。这需要给出提示,然后能继续运行就继续,不能的就安全退出。这里用异常捕捉或返回错误码接着后续处理。
在使用异常捕捉或返回错误码的时候,有个问题需要思考清楚。就是把问题就地处理掉,还是继续抛到上层,交给函数调用者处理。有些情况,函数调用者有特殊的处理方式,异常抛出更好。有些情况在比较高内聚的模块内的,功能实现和外界依赖关系小的,模块内自己处理掉更好。