2011-03-04 139 views
1

正确创建和使用自定义异常的深层技术细节有哪些?我的意思是,我可以看到使用自定义异常来帮助控制更高层的流动,甚至可能向用户输出正确的消息(远离基础软件层),但是其他细节将会是什么好/总是包括在内?异常构建的详细信息

我知道为什么有些事情是非常好的一切信息都是很好的开始,但是,你在袖子里保持什么样的技巧?

还有:何时构建自定义异常?

我想了解所有语言,但目前正在使用c#。

谢谢!

回答

1

非常有趣的问题。我发现详细的异常处理非常重要,它是稳定代码的一个来源。您可以做的最好的事情是自定义一般的异常不够详细;我知道这听起来很明显,但这里是一个例子:你可以抛出FileNotFoundException或者你自己的MyFileError。

1)名称上的差异仅仅是第一个优点:它立即告诉你它是你的软件包中失败的方法之一(与你将在大型项目中使用的几十个第三方库相反) ,希望也会抛出定制的例外,而不是标准的例外)。 2)更好的是:你可以添加信息到MyFileError对象的字段中:你可以存储一个字符串,告诉你该方法试图加载哪个文件。

这只是一个非常简单的例子;想想这更进化的一个:你正在建立一个银行系统(在线银行或B2B)。而不是一个SocketError,你有你的自定义的TransactionError,它有一个字段来存储哪部分事务失败,2个例子的状态是“before-authentication”和“monetaryTransactionNonZero”,第一个状态是无害的,你可以让系统自动重试几次,然后提示用户检查他的网络;然而第二个是货币交易中的关键部分:货币从持有人的账户中扣除,但还没有分配给他想要把钱汇到的人;在这种情况下,您的高层系统应该发出回滚(serverside)和错误消息(clientside)。

没有什么比在较低级别具有此类详细信息但使用catch(Exception){System.out.println(“出现错误”)更糟糕; }在上层。

+0

hello eznme。感谢回复。我认为没有人会:P。我得到了很好的异常控制背后的所有想法。在我的大多数应用程序中,我尝试创建一些自定义的异常来发现真正发生的事情。你的回答告诉我,我正在做的事情,所以,我很高兴。任何人都会对这个问题发表评论? – 2011-03-05 20:25:50