この状況で例外を処理する方法をどのように修正しますか? 最初は、次の方法で 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;
}
この少し似た質問により、カスタム例外でこの問題を解決できると考えるようになりました。ただし、この作成の説明を読んで、この状況を解決するためにどのように使用できるかについて混乱しました.
返されたエラー メッセージに応じてユーザーが問題を解決できる可能性があるため、とにかくカスタム例外を使用することが正当化される状況であると確信しています。とにかく、前述のガイドから書きました(簡単にするためにコード例は省略しました)。