2009-04-27 149 views
2

我对SharePoint很陌生,所以我想我该如何处理异常?当我编写自定义代码时,是否必须检查它们,或者如果它们被抛出,它们会自动记录并不会中断应用程序?如何处理SharePoint异常?

如果不是,那我该如何登录它们?

谢谢!

编辑:我应该如何记录这些异常?

回答

2

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

除非你处理你的例外应用程序将最有可能突破。某些错误(如事件接收器中生成的错误)不会“中断”应用程序(终止事件接收器除外)。除非您更改了中央管理中的设置,否则这些以及所有其他未发现的错误将最终记录在日志中。

+0

你说“应用程序将最有可能破发”,但在那之后“所有其他uncatched错误将在日志中结束”。 请问您能更具体吗? – 2009-04-28 05:52:25

1

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

1

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

我们只在发现异常时才会捕获异常,如果我们觉得可以为异常增加额外的值,然后重新抛出错误,允许http模块将其提取出来。

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找到一个很好的列表。