如何处理SharePoint异常?

时间:2009-04-27 07:41:50

标签: sharepoint exception exception-handling moss wss

我是SharePoint的新手,所以我想我该如何处理异常?当我编写自定义代码时,我是否必须检查它们,或者,如果它们被抛出,它们会自动记录并且不会破坏应用程序?

如果没有,那我该如何记录呢?

谢谢!

编辑:我该如何记录这些例外?

6 个答案:

答案 0 :(得分:2)

使用此命令写入日志:http://msdn.microsoft.com/en-us/library/aa979522.aspx

除非您处理异常,否则应用程序很可能会中断。某些错误(例如在事件接收器中生成的错误)不会“中断”应用程序(除了终止事件接收器)。除非您更改了管理中心的设置,否则这些错误以及所有其他未捕获的错误将最终出现在日志中。

答案 1 :(得分:1)

有例外的一般规则是你应该只捕获你知道如何正确处理自己的异常 - 我不知道sharepoint是否记录了未处理的异常本身,但我认为它将未处理的异常转换为各种适当的SOAP异常网络服务,所以你不会崩溃整个应用程序。

答案 2 :(得分:1)

我们允许所有异常冒泡并使用自定义HTTP模块来处理所有异常。从这里,我们记录到ULS日志以及跟踪日志。这主要取自SharePoint MVP Chris O'brien's Code

如果我们觉得可以为异常添加额外的值,然后重新抛出错误,允许http模块选择它,我们只捕获异常。

答案 3 :(得分:1)

请阅读本文“通过创建故障排除工具箱”http://sharepointmagazine.net/technical/development/getting-started-with-sharepoint-programming-simplifying-sharepoint-debugging-by-creating-the-troubleshooting-toolbox简化SharePoint调试。在为SharePoint开发应用程序时,它有一些关于日志记录,调试等的好技巧。

答案 4 :(得分:1)

我将假设您正在使用SharePoint对象模型,而不是其未提及的Web服务,并且通常使用对象模型,因为它提供了更多功能。

SharePoint使用自己的自定义SPException类来抛出异常以及几个标准的.NET异常类。不幸的是,SDK文档没有提到哪些方法会抛出异常以及何时会发生异常。您自己的经历和Reflector最适合学习。

首次学习时,您可能会经常引发异常,并且知道何时以及为何发生这种情况可能会非常难以预测。由SPException抛出的那些通常具有有用的消息,但是SharePoint也抛出的标准.NET异常(例如ArgumentOutOfRangeException)提供的细节非常少。因此,为了帮助调试它通常是一个好主意,让你的方法保持简洁和重点,以便很容易找到可能发生异常的原因。你只需要检查它们是否有充分的理由让它们冒泡,除非你可以重新抛出并添加更多细节(suggested by Peter)是确保正确性和保持代码清洁的好方法。

SharePoint通常不会自动记录异常。有时您会在ULS (a.k.a. Trace Log) files中找到它们,但通常在记录时它们不会提供比您自己捕获的例外更多的信息。如此处所述,有许多选项可用于设置自己的日志记录。您还可以在SharePoint Dev Wiki找到一个很棒的列表。

答案 5 :(得分:1)