title: Unexpected token when deserializing object in JsonConvert.DeserializeObject
body: <p>I have the following test code:</p>
  
  <pre><code>[TestClass]
  public class TestJsonDeserialize
  {
      public class MyClass
      {
          [JsonProperty("myint")]
          public int MyInt { get; set; }
          [JsonProperty("Mybool")]
          public bool Mybool { get; set; }
      }
  
      [TestMethod]
      public void Test1()
      {
          var errors = new List&lt;string&gt;();
          var json1 = "{\"myint\":1554860000,\"Mybool\":false}";
          var json2 = "{\"myint\":3554860000,\"Mybool\":false}";
          var i = JsonConvert.DeserializeObject&lt;MyClass&gt;(json2, new JsonSerializerSettings
          {
              Error = delegate (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
              {
                  Debug.WriteLine(args.ErrorContext.Error.Message);
                  errors.Add(args.ErrorContext.Error.Message);
                  args.ErrorContext.Handled = true;
              }
          });
          Assert.IsTrue(errors.Count &lt;= 1);
      }
  }
  </code></pre>
  
  <p>The call to JsonConvert.DeserializeObject produces 2 errors. One of them is expected, but the other not.
  The errors are:</p>
  
  <ul>
  <li>JSON integer 3554860000 is too large or small for an Int32. Path 'myint', line 1, position 19.</li>
  <li>Unexpected token when deserializing object: Boolean. Path 'Mybool', line 1, position 34.</li>
  </ul>
  
  <p>Why is there a 2nd error although the 1st error is marked as handled.
  I already updated from Newtonsoft.Json 8.0.2 to 9.0.1 but it remains.
  When passing the first string (json1 instead of json2), then no errors at all occur.</p>