我面临以下问题
我的解决方案是使用MVVM设置的。
在View Project中,我有一个使用Windows.Web.Http.HttpClient
进行网络呼叫的服务。此服务被注入到几个ViewModel中。
在视图模型中,我有一个像这样的try catch块。
try
{
await webClientService.MakeACallAsync();
}
catch (System.Runtime.InteropServices.COMException e)
{
//web exceptions such as 404, 401, 500 etc
// code handling exceptions.
}
MakeACallAsync就是这个功能,但问题不仅限于这个调用,它也适用于其他类似的调用。
public async Task<string> MakeACallAsync(string username, string password)
{
var usernamepassword = $"{username}:{password}";
var bytes = Encoding.UTF8.GetBytes(usernamepassword);
var base64 = Convert.ToBase64String(bytes);
httpClient.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("Basic", base64);
return await httpClient.GetStringAsync( a uri here );
}
现在,如果服务因为404,500等响应而抛出任何异常,我会捕获这些异常并处理它们。
这在Debug中很有效,但在Release中,异常不会像System.Runtime.InteropServices.COMException
那样抛出,而是System.Exception
。
有人知道为什么会这样吗?