C# 如何管理异常
我需要从外部数据库中提取一些数据。 我不能访问所有数据,这就是为什么我需要处理访问异常以不阻止应用程序的执行。 这是提取文档的功能,例如:C# 如何管理异常,c#,exception-handling,C#,Exception Handling,我需要从外部数据库中提取一些数据。 我不能访问所有数据,这就是为什么我需要处理访问异常以不阻止应用程序的执行。 这是提取文档的功能,例如: public IDocumentListCollection getDocumentCollection(string ProjectID, SearchQuery query) { try { return DocumentService().FindDocum
public IDocumentListCollection getDocumentCollection(string ProjectID, SearchQuery query)
{
try
{
return DocumentService().FindDocuments("", ProjectID, true, true);
}
catch(Exception e)
{
...
}
}
我需要在catch bloc中写些什么来满足我的目的?您需要在FindDocuments
中“处理”1它
对于当前的<代码>尝试…捕获<代码>-阻止您所能做的就是:
throw;
)FindDocuments
关闭的位置重新启动或拾取文件
[我需要在catch
-块中写入什么内容才能满足我的目的
在FindDocuments
中,任何内容都不能满足“忽略”或“跳过”权限异常的目的。您将需要编辑该方法
一,。默认情况下,您根本不应该处理异常。您有两个好选项和一个坏选项 在catch块中返回标准IDocumentListCollection,或者删除“try{}catch{}”,让函数抛出异常(并在更高级别上处理) 第三个选项是returnnull(如果适用),但会使整个异常处理无效
public IDocumentListCollection getDocumentCollection(string ProjectID, SearchQuery query)
{
IDocumentListCollection rtnVal;
try
{
rtnVal = DocumentService().FindDocuments("", ProjectID, true, true);
}
catch(Exception e)
{
rtnVal = new DocumentListCollection(); //Or any other stubbed version.
}
return rtnVal;
}
首先,在VisualStudio中单击“调试”菜单,然后选择“异常”并关闭所有通知(“抛出”列)。现在,您的应用程序执行不会在调试时终止(当然,如果您的异常已被处理)当您访问不允许连接的数据时会引发什么异常?PermissionDeniedException然后您应该捕获PermissionDeniedException而不是exception。这样,如果抛出了PermissionDeniedException之外的内容,您将发现它。如果没有更具体的信息,就无法回答数据是如何组织的以及您是如何查询的。如果您的方法无法访问所需的外部数据,您希望您的方法做什么?返回空集合?抛出另一个异常?这真的取决于你想要什么。我不能,FindDocuments是一个已经在dll中准备好的函数,我在代码中导入它。我只是用它来提取我需要的数据。不幸的是,你已经回答了你自己的问题。所以我不能忽略该异常并继续提取我有权访问的数据?不是外部的。在你发现异常时,
FindDocuments
已经“消失”/“退出”(可以这么说).那你有什么建议?我怎么办?我感谢你的帮助:)