C# 是否应该在某个地方处理所有抛出的异常?

C# 是否应该在某个地方处理所有抛出的异常?,c#,exception,C#,Exception,抛出异常而不处理它是一种不好的做法吗?例如,如果我有一个在Double.IsNaN()上返回true的数字,而它不应该返回true,那么我可以通过抛出异常来崩溃程序吗?如果在事件发生时没有合适的方式继续操作,那么“处理”异常的具体意义是什么?在违反基本的健全性检查的情况下添加异常是无害的。如果您错误地假设某件事情是公理化的,而实际上并非如此,那么此类异常只会在测试期间发生。您不一定需要处理这样的异常 如果您所说的是正常程序运行期间可能发生的损坏状态,但在应用程序的当前层中无法处理,那么您似乎需要

抛出异常而不处理它是一种不好的做法吗?例如,如果我有一个在Double.IsNaN()上返回true的数字,而它不应该返回true,那么我可以通过抛出异常来崩溃程序吗?如果在事件发生时没有合适的方式继续操作,那么“处理”异常的具体意义是什么?

在违反基本的健全性检查的情况下添加异常是无害的。如果您错误地假设某件事情是公理化的,而实际上并非如此,那么此类异常只会在测试期间发生。您不一定需要处理这样的异常


如果您所说的是正常程序运行期间可能发生的损坏状态,但在应用程序的当前层中无法处理,那么您似乎需要另一个层,该层将从错误中恢复,与用户通信(或与代码的任何接口)并采取适当的操作。“适当的操作”可以是任何内容,从记录错误到终止,再到询问用户进一步的说明。不处理此类异常不是一个好主意。

我不喜欢不处理异常,即使您所做的只是通知用户情况已恶化,然后呼叫退出。这正是不处理异常所能做的,除非您可以尝试提供比默认未处理异常更好的错误诊断。它还将为您提供记录异常的机会,以便用户可以通过附加日志文件发送错误消息。除此之外,崩溃是解决“状态已损坏,我不知道哪一端会出现”问题的一种可接受的解决方案。

如果没有优雅的方法来处理它。。那么你的应用程序就会以一种可怕的暴力方式死亡。这比继续破坏状态要好得多。
我可以通过抛出异常使程序崩溃吗?
--您的程序在规定的条件下崩溃可以吗?@Simon Whitehead,很好的建议您将您的评论作为官方答案。未经处理的异常并不完全是崩溃。它们更像是异常情况下的有序出口。一个例外,无论是已处理的还是未处理的,都是当代码说“我对此无能为力”时发生的情况。崩溃是指当您获得蓝屏死亡,或者您的进程被操作系统终止,因为它正在写入不应该写入的内存,或者类似的灾难性事件时发生的情况。未经处理的异常并不完全是灾难性的;没有小猫会受到伤害。@RobertHarvey Harm会在重要的程序执行没有正确恢复的情况下伤害小猫:>这些帖子对我来说真的很有用,尽管帖子是基于意见的,但我发现作为一名新程序员,听取意见有助于我更好地思考这个问题