Проект, над которым я сейчас работаю, - это дизайнер форм (Приложение Silverlight), в котором пользователь может перетащить элемент управления с панели инструментов на рабочий холст, а затем предоставить его свойства на панели свойств (например, Visual Studio и Expression Blend).
Мы развернули наше приложение в IIS нашего тестового сервера для отдела контроля качества, чтобы протестировать его. Существует определенная ошибка, из-за которой ввод «Авто» в полях, где это не применимо (MinHeight и MinWidth), обрабатывается неправильно. Мы продолжили присваивать эти недопустимые значения, просто захватили исключение и отобразили окно сообщения с сообщением об исключении:
private void SetControlMinWidth(Control control, TextBox setterTextBox, bool isAdvancedControl = false)
{
try
{
double minWidth = !string.IsNullOrEmpty(setterTextBox.Text) ?
(
setterTextBox.Text.Trim().ToUpper() == "AUTO" ? double.NaN : Convert.ToDouble(setterTextBox.Text)
) : control.MinWidth;
control.MinWidth = minWidth;
}
catch (Exception ex)
{
CustomMessageBox.Show(ex.Message.ToString());
}
}
Исключением, которое передается, является ArgumentException с его сообщением по умолчанию «Значение не попадает в ожидаемый диапазон». После развертывания разработчики провели некоторое тестирование, и обработка исключений работает, как и ожидалось. Удивительно, но сообщение, которое видят тестеры QC, не является сообщением по умолчанию ArgumentException, а
[Arg_ArgumentException]
Arguments:
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60351.0&File=mscorlib.dll&Key=Arg_ArgumentException
Кто-нибудь сталкивался с таким сценарием, когда на компьютерах разработчиков отображается правильное сообщение об исключении, а на компьютерах QC-тестера - нет? Помните, что разработчики тестируют развернутое приложение и не запускаются из Visual Studio.