diff --git a/src/RestSharp/Http.Sync.cs b/src/RestSharp/Http.Sync.cs index 8fece9fb0..18f217834 100644 --- a/src/RestSharp/Http.Sync.cs +++ b/src/RestSharp/Http.Sync.cs @@ -118,6 +118,9 @@ HttpResponse ExecuteRequest(string httpMethod, Action prepareReq } catch (Exception ex) { + if (ThrowOnAnyError) + throw; + return ExtractErrorResponse(ex); } diff --git a/src/RestSharp/Http.cs b/src/RestSharp/Http.cs index 44b86bf57..b54fde51f 100644 --- a/src/RestSharp/Http.cs +++ b/src/RestSharp/Http.cs @@ -229,6 +229,8 @@ static void AddRange(HttpWebRequest r, string range) /// public Action? WebRequestConfigurator { get; set; } + public bool ThrowOnAnyError { get; set; } + [Obsolete] public static IHttp Create() => new Http(); diff --git a/src/RestSharp/RestClient.cs b/src/RestSharp/RestClient.cs index 0a83f1a6e..bfc84eb72 100644 --- a/src/RestSharp/RestClient.cs +++ b/src/RestSharp/RestClient.cs @@ -421,7 +421,8 @@ IHttp ConfigureHttp(IRestRequest request) CookieContainer = CookieContainer, AutomaticDecompression = AutomaticDecompression, WebRequestConfigurator = WebRequestConfigurator, - Encode = Encode + Encode = Encode, + ThrowOnAnyError = ThrowOnAnyError, }; var requestParameters = new List(); diff --git a/test/RestSharp.Tests/RestRequestTests.cs b/test/RestSharp.Tests/RestRequestTests.cs index cd2963663..915c4efef 100644 --- a/test/RestSharp.Tests/RestRequestTests.cs +++ b/test/RestSharp.Tests/RestRequestTests.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using System.Net; +using NUnit.Framework; namespace RestSharp.Tests { @@ -26,5 +27,13 @@ public void RestRequest_Test_Already_Encoded() Assert.AreEqual("notencoded", request.Parameters[1].Value); Assert.AreEqual(ParameterType.QueryStringWithoutEncode, request.Parameters[1].Type); } + + [Test] + public void RestRequest_Fail_On_Exception() + { + var req = new RestRequest("nonexisting"); + var client = new RestClient("http://localhost:12345") { ThrowOnAnyError = true }; + Assert.Throws(() => client.Execute(req)); + } } } \ No newline at end of file