Exception 施工中的细节

Exception 施工中的细节,exception,language-agnostic,architecture,Exception,Language Agnostic,Architecture,创建和正确使用自定义异常背后的深层技术细节是什么 我的意思是,我可以看到自定义异常的使用,以帮助控制更高层次的流程,甚至可能向用户输出正确的消息(远离基本软件层),但还有什么其他细节是好的/好的 我知道各种各样的信息,为什么一些特殊的东西从一开始就很好,但是,你袖子里藏着什么把戏呢 还有:何时生成自定义异常 我想了解所有语言,但目前正在使用c 谢谢 非常有趣的问题。我发现详细的异常处理非常重要,它是稳定代码的一个来源。你能做的最好的事情就是在一般异常不够详细时进行定制;我知道这听起来很明显,但这

创建和正确使用自定义异常背后的深层技术细节是什么

我的意思是,我可以看到自定义异常的使用,以帮助控制更高层次的流程,甚至可能向用户输出正确的消息(远离基本软件层),但还有什么其他细节是好的/好的

我知道各种各样的信息,为什么一些特殊的东西从一开始就很好,但是,你袖子里藏着什么把戏呢

还有:何时生成自定义异常

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


谢谢

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

1) 名称上的差异只是第一个优势:它会立即告诉您,这是包中失败的方法之一(与您将在大型项目中使用的几十个第三方库不同,这些库可能还会抛出自定义异常,而不是标准异常)

2) 更好的是:您可以向MyFileError对象的字段添加信息:您可以存储一个字符串,告诉您该方法尝试加载的文件

这只是一个非常简单的例子;想想这个更进化的系统:你正在构建一个银行系统(网上银行或b2b)。与SocketError不同的是,您的自定义TransactionError有一个字段存储事务失败的部分,两个示例状态为“身份验证前”和“monetaryTransactionNonZero”,第一个是无害的,你可以让系统自动重试几次,然后提示用户检查他的网络;然而,第二个是货币交易中的关键部分:资金从持有人的账户中扣除,但尚未分配给他想要汇款的人;在这种情况下,您的高级系统应该发出回滚(服务器端)和错误消息(客户端)


没有什么比在较低级别上有这样详细的信息,但在较高级别上使用catch(异常){System.out.println(“发生错误”);}更糟糕的了。

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

1) 名称上的差异只是第一个优势:它会立即告诉您,这是包中失败的方法之一(与您将在大型项目中使用的几十个第三方库不同,这些库可能还会抛出自定义异常,而不是标准异常)

2) 更好的是:您可以向MyFileError对象的字段添加信息:您可以存储一个字符串,告诉您该方法尝试加载的文件

这只是一个非常简单的例子;想想这个更进化的系统:你正在构建一个银行系统(网上银行或b2b)。与SocketError不同的是,您的自定义TransactionError有一个字段存储事务失败的部分,两个示例状态为“身份验证前”和“monetaryTransactionNonZero”,第一个是无害的,你可以让系统自动重试几次,然后提示用户检查他的网络;然而,第二个是货币交易中的关键部分:资金从持有人的账户中扣除,但尚未分配给他想要汇款的人;在这种情况下,您的高级系统应该发出回滚(服务器端)和错误消息(客户端)


没有什么比在较低级别上拥有如此详细的信息,但在较高级别上使用catch(异常){System.out.println(“发生错误”);}更糟糕的了。

hello eznme。谢谢你的回复。我以为没有人会:P。我明白精细异常控制背后的所有想法。在我的大多数应用程序中,我尝试创建一些自定义异常,以了解实际发生的情况。你的回答告诉我,我正在做一些正确的事情,所以,我很高兴。还有人想对这个问题发表评论吗?你好,埃兹姆。谢谢你的回复。我以为没有人会:P。我明白精细异常控制背后的所有想法。在我的大多数应用程序中,我尝试创建一些自定义异常,以了解实际发生的情况。你的回答告诉我,我正在做一些正确的事情,所以,我很高兴。还有人想对这个问题发表评论吗?