2

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

如果没有,那么我该如何记录它们?

谢谢!

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

4

4 回答 4

2

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

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

于 2009-04-27T17:16:27.860 回答
1

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

于 2009-04-27T08:03:45.973 回答
1

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

如果我们认为可以为异常添加额外的价值,我们只会捕获异常,然后重新抛出错误,允许 http 模块接收它。

于 2009-04-27T18:12:08.507 回答
1

我将假设您使用的是 SharePoint 对象模型,而不是它的 Web 服务,因为您没有说明哪个,并且通常使用对象模型,因为它提供了更多功能。

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

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

SharePoint 通常不会自动记录异常。有时您会在ULS(又名跟踪日志)文件中找到它们,但通常在记录时,它们不会提供比您自己可以捕获的异常更多的信息。如这里已经提到的,有很多选项可以设置您自己的日志记录。您还可以在SharePoint Dev Wiki上找到一个很棒的列表。

于 2009-05-26T16:17:49.250 回答