From 43e90a38840600a2556be38cc331de4a0d948834 Mon Sep 17 00:00:00 2001 From: Rogier van der Hee Date: Tue, 9 Aug 2016 12:37:35 +0200 Subject: [PATCH] Add the key in the message on throwing a KeyNotFoundException (#282) * Add the key in the message on throwing a KeyNotFoundException for trying to access an invalid key in the ResourceDictionary. This helps a lot in tracking down what resource is actually missing. * Fix test build, use C# 6 string interpolation --- Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs | 11 ++++++++++- Xamarin.Forms.Core/ResourceDictionary.cs | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs b/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs index d422922..c4e6bbf 100644 --- a/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs +++ b/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs @@ -252,5 +252,14 @@ namespace Xamarin.Forms.Core.UnitTests elt.Parent = parent; Assert.Fail (); } - } + + [Test] + public void ShowKeyInExceptionIfNotFound() + { + var rd = new ResourceDictionary(); + rd.Add("foo", "bar"); + var ex = Assert.Throws(() => { var foo = rd["test_invalid_key"]; }); + Assert.That(ex.Message, Is.StringContaining("test_invalid_key")); + } + } } \ No newline at end of file diff --git a/Xamarin.Forms.Core/ResourceDictionary.cs b/Xamarin.Forms.Core/ResourceDictionary.cs index 791c6e5..0747eaa 100644 --- a/Xamarin.Forms.Core/ResourceDictionary.cs +++ b/Xamarin.Forms.Core/ResourceDictionary.cs @@ -98,7 +98,7 @@ namespace Xamarin.Forms return _innerDictionary[index]; if (_mergedInstance != null && _mergedInstance.ContainsKey(index)) return _mergedInstance[index]; - throw new KeyNotFoundException(); + throw new KeyNotFoundException($"The resource '{index}' is not present in the dictionary."); } set { -- 2.7.4