设计原则-----函数返回错误还是抛出异常

看到stackoverflow上有个回答,就是软件上层(相对)组件建议使用异常,低层(相对)组件建议函数返回错误码(如果是纯C,那么返回错误码是肯定了,越独立的模块组件,更推荐使用错误码)。很明显,返回错误码比较简单,但是会但来后期上的维护困难等等,当然,也并不是绝对的。

http://stackoverflow.com/questions/253314/exceptions-or-error-codes

当然,这个要见仁见智了,不能统一偏向用某个。以下也有几个社区讨论,讨论的都比较好:

http://www.iteye.com/problems/59997

http://star.baidu.com/forum/forum.php?mod=viewthread&tid=412

C++异常使用方法:

http://blog.csdn.net/renwotao2009/article/details/6751687

当然,异常还有个非常明显的好处,就是函数的调用方不会忘记check返回值。因为不需要。如果只是单纯的返回error message,万一没有检查返回值呢?那么一旦错误,程序将继续运行,进入不确定状态。

时间: 2024-11-14 17:21:17

设计原则-----函数返回错误还是抛出异常的相关文章

VLOOKUP函数返回错误值#N/A的两种解决方法

来源:http://www.ittribalwo.com/article/3626.html 下面的截图,根据左边的工号查询相应的工资.小伙伴的F2单元格公式是:=VLOOKUP(E2,$A$1:$C$9,2,0). 看公式,没有什么问题,公式都书写正确,但是为何出现vlookup函数返回#n/a错误呢? 细心的小伙伴,可能已经发现,是因为单元格格式不同导致的.左边的工号是文本格式的,E列的工号是数字形式,正是因为格式不同出现VLOOKUP函数查找不到正确值,那您知道如何解决吗? 修正方法一:

js函数设计原则

一般认为函数指具有返回值的子程序,过程指没有返回值的子程序.C++中把所有子程序成为函数,其实那些返回值为void的 函数在语义上也是过程.函数与过程的区别更多是语义上的区别,而不是语法的区别. 语言纯化论者认为一个函数应该只有一个返回值,这和数学函数一样.即函数只接受输入(参数),通过参数运算返回结果. 除此之外的效果被称为函数的副作用,比如修改全局变量. function sum1(x, y) { return x+y }function sum2(x, y) { alert(x+y) }s

C之函数设计原则(四十二)

我们今天来讲下函数的设计原则.函数从意义上应该是一个独立的功能模块,函数名要在一定程度上反映函数的功能:函数参数名要能够体现参数的意义,尽量避免在函数中使用全局变量. A.当函数参数不应该在函数体内部被修改时,应加上 const 声明:如果参数是指针,且仅作输入参数,则一个加上 const 声明.例: void str_copy(char *str_dest, const char *str_src): B.不能省略返回值的类型,如果函数没有返回值,则应声明其为 void 类型:对参数进行有效性

第48课 函数设计原则

函数设计原则: 函数应该是无状态的,就是第一次调用和第二次调用是一样的. getchar返回值是int型. 优秀代码欣赏:Eclipse代码 1 /******************************************************************************* 2 * Copyright (c) 2000, 2005 IBM Corporation and others. 3 * All rights reserved. This program a

Socket进程处理被中断的系统调用及Accept函数返回EINTR错误处理

我们用慢系统调用来描写叙述那些可能永远阻塞的系统调用(函数调用),如:accept.read等.永远阻塞的系统调用是指调用有可能永远无法返回.多数网络支持函数都属于这一类.比如,假设没有客户连接到server上,则server对accept的调用就没有返回保证.类似的.假设客户从未发送过一行要求server回射的文本.则server对read的调用将永不返回.其它慢系统调用的样例是对管道和终端设备的读写. 有一个例外,就是磁盘IO.他一般都返回调用者. 当一个进程阻塞与慢系统调用时捕获到一个信号

设计模式————6大设计原则

一. 6大设计模式 Single Responsibility Principle : 单一职责原则 Liskov Substitution Principle     : 里氏替换原则 Dependence Inversion Principle :依赖倒置原则 Interface Segregation Principle  : 接口隔离原则 Law of Demeter           : 迪米特法则 Open Closed Principle               : 开闭原则

java设计原则:16种原则

一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP) 二  包的设计原则   6

RESTful API的设计原则

最近一直在做公司的一个API平台的项目,前后大约有半年多了,中间穿插了好多其他的项目一起做的.上周经理要求写文档,我就重新打开项目开始检阅之前的代码,发现好多地方当初设计的并不合理,忽然就想到,一个好的API平台,应该怎么来设计呢?有哪些规范要遵守呢?面对自己的项目,感觉好多地方都要改,但是已经有人在用了,怎么办?全都要改动吗?所以就上网找解决方案,然后就发现一精品贴,现转载过来,以备不时查阅. 原文地址:http://www.cnblogs.com/moonz-wu/p/4211626.htm

设计模式之6大设计原则

设计模式之6大设计原则 原则一:单一职责原则(Single Responsibility Principle SRP) 定义:There should never be more than one reason for a class to change.(应该有且仅有一个原因引起类的变更) 好处: 1.类的复杂性降低,实现什么职都有清晰明确的定义: 2.可读性高,负责性降低,当然可读性就提高了: 3.可维护性提高,可读性提高,自然就更容易维护了: 4.变更引起的风险降低,变更是必不可少的,如果