抛出异常有什么意义?

hoa*_*key 4 c# exception-handling

我正在用c#编写一个登录类,我正在努力为空密码,密码不足的密码字符等抛出异常.突然发生的事情是 - 我怎么处理这些异常?他们是谁/他们是谁?无论我是否处理异常,该应用程序仍然会失败.是其他开发者的例外,客户!?

Jus*_*ner 6

如果您是创建异常的人,则不应对其进行任何操作.

例外情况是让您的消费者知道您无法正常恢复的问题.你给他们机会来纠正问题,记录错误,或者将异常传递到链上直到可以用它做一些有用的事情.

  • @AndréCaron虽然这是真的,但你需要能够改变帽子.当您编写方法时,您不是该方法的客户端.稍后当您编写客户端代码时,您不必担心方法的细节,只需要担心合同. (6认同)
  • 这是一种奇怪的方式.很多人最终都在编写课程和客户! (2认同)

Stu*_*son 6

例外用于提供有关特定故障原因的详细信息.如果您只是让代码本身失败,您就错过了提供有关失败的实际原因的更丰富详细信息的机会.

您的用户不应该看到您添加到例外的信息.相反,请考虑添加一个全局异常处理程序,捕获您的详细异常,记录信息,然后向您的用户显示友好的错误消息.

异常不仅在日志中提供有关失败原因的详细消息(即示例中的密码为空),还提供指示导致异常的调用链的调用堆栈信息.在登录表单中,这不太重要.但是,在多线程异步客户端/服务器应用程序中,这可能很关键.

本文包含许多好的指南:http://msdn.microsoft.com/en-us/library/ms229005.aspx