在这种情况下,您将如何纠正处理异常的方法?最初,我希望以以下方式使用 trycatch 会在上传失败时捕获助手类抛出的异常。
我的目标是返回“false”并打开一个带有错误消息的消息框,我将从我的上传尝试中提取 HTML 响应。我试图在不采取不良做法并将 GUI 代码放入我的帮助程序类的情况下做到这一点。
try
{
// returns bool
successful = UploadHelper.Upload(uploadToPath, File.ReadAllBytes(uploadFromPath), properties);
}
catch (Exception ex)
{
string error = ex.Message;
}
助手类:
public static bool Upload(string webUrl, string documentName, byte[] bytes, Dictionary<string, object> metaInfo, out string result)
{
try
{
using (WebClient webClient = new WebClient())
{
//result is HTML string containing data
result = Encoding.UTF8.GetString(webClient.UploadData(webUrl + "/_vti_bin/_vti_aut/author.dll", "POST", data.ToArray()));
// if fails throw exception
if (result.IndexOf("\n<p>message=successfully") < 0)
throw new Exception(result);
}
}
catch (Exception ex)
{
result = ex.Message;
// Upload failed
return false;
}
// Upload succeeded
return true;
}
这个稍微相似的问题让我想到我可以通过自定义异常来解决这个问题。然而,阅读创建它们的解释让我对如何使用它们来解决这种情况感到困惑——因为这似乎只会将 Messagebox 代码移动到 Exception 类,这也不是一个好地方。
我相当确定这是我有理由使用自定义异常的情况,因为用户可能能够根据返回的错误消息解决问题。因此,无论如何我都是从上述指南中编写的(为简单起见,代码示例中省略了)。