Hi tôi đang sử dụng HttpClient tương tự như sau:HttpClient - đối phó với trường hợp ngoại lệ tổng
public static Task<string> AsyncStringRequest(string url, string contentType)
{
try
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(contentType));
return client.GetStringAsync(url).ContinueWith(task => {
return task.Result;
});
}
catch (AggregateException ex)
{
throw ex;
}
catch (WebException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
Nhưng tôi đang gặp khó khăn đối phó với trường hợp ngoại lệ. Tôi đã thêm các khối bắt bổ sung chỉ để thử và bước ném, nhưng không ai trong số các điểm phá vỡ được bắt gặp trong bất kỳ khối catch nào. Tôi nhận ra bằng cách sử dụng Task ngoại lệ có thể xảy ra trên một thread khác với người gọi để ngoại lệ được bọc trong một container tổng hợp, nhưng tôi không chắc chắn cách tốt nhất để đối phó với những ngoại lệ này là gì.
Ví dụ: tôi yêu cầu dịch vụ web và thông số không hợp lệ cụ thể trong yêu cầu và ngoại lệ được ném. Tôi muốn tôi có thể nắm bắt các ngoại lệ tổng hợp và xem xét các quan điểm độc lập để tìm ra lý do tại sao yêu cầu đó thất bại và trả lại một thông điệp thân thiện.
Vì vậy, câu hỏi của tôi là, cách tốt nhất để nắm bắt những ngoại lệ tổng hợp này và xử lý chúng là gì?
Tuyệt, tôi sẽ thử nó trong giờ tiếp theo! – gdp
Tôi biết đây là một câu hỏi cũ, nhưng có cách nào để lấy mã trạng thái http từ sự tổng hợp ngoại lệ, giống như bạn có thể khi bắt được một ngoại lệ web? – gdp
@gdp: Có, bạn có thể gọi .Flatten trên AggregateException và sau đó truy cập vào thuộc tính InnerExceptions và rút ra WebException chứa bên trong nó. –