В то время как , что вызывает NullReferenceExceptions и подходит к avoid / fix , такое исключение было рассмотрено в других ответах, что многие программисты не имеют " t узнал еще, как независимо отлаживать такие исключения во время разработки.
В Visual Studio это обычно легко благодаря Visual Studio Debugger .
Во-первых, убедитесь, что правильная ошибка будет обнаружена - см. . Как разрешить нарушение «Исключение System.NullReferenceException» в VS2010? Примечание1
Затем либо Начать с отладки (F5) , либо Приложить [отладчик VS] к запуску процесса . Иногда может быть полезно использовать Debugger.Break
, в котором будет предложено запустить отладчик.
Теперь, когда NullReferenceException выбрано (или необработанно), отладчик остановится ( помните правило, указанное выше?) в строке, на которой произошло исключение. Иногда ошибка может быть легко обнаружена.
Например, в следующей строке единственный код, который может , вызывает исключение, если myString
имеет значение null. Это можно проверить, посмотрев окно Watch или выполнив выражения в окне Immediate Window .
var x = myString.Trim();
В более сложных случаях, таких как следуя ниже, вам нужно будет использовать один из методов выше (Watch или Immediate Windows) для проверки выражений, чтобы определить, было ли str1
пустым или если str2
имеет значение null.
var x = str1.Trim() + str2.Trim();
Once , где было выбрано исключение, это обычно тривиально по отношению к разуму назад, чтобы выяснить, где введенное значение null было [неправильно] -
. Найдите время, необходимое для понимания причина исключения. Проверьте нулевые выражения. Проверьте предыдущие выражения, которые могли бы привести к таким нулевым выражениям. Добавьте контрольные точки и, по мере необходимости, пройдите через программу. Используйте отладчик.
1 Если Break on Throws слишком агрессивен и отладчик останавливается на NPE в библиотеке .NET или сторонних разработчиков, Break на User-Unhandled можно использовать для ограничения выловленных исключений. Кроме того, VS2012 представляет Just My Code , который я рекомендую также включить.
Если вы отлаживаете с включенным Just My Code, поведение немного отличается. При включенном Just My Code отладчик игнорирует исключения, связанные с привилегиями обычного языка (CLR) первого шанса, которые выходят за пределы My Code и не проходят через My Code
Существует исправление реестра, которое вы можете использовать. http://www.engagesoftware.com/Blog/EntryId/117/Editing-SqlDataProvider-scripts-within-Visual-Studio.aspx
В основном вы смотрите на HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Languages\File Extensions\.css
(изменение номера версии на основе вашей версии VS и удаление Wow6432Node
, если вы не находитесь в 64-разрядной ОС) и сделать копию этого, вызвав его .my-custom-extension
UPDATE Согласно аналогичному вопросу о переполнении стека , для некоторых расширений (например, CSS) есть еще один шаг. Он говорит, чтобы взять GUID из расширений, которые вы копируете, и найти его запись в HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Editors
и добавить значение DWORD в свой Extensions
ключ, как и существующее значение css
. Этот вопрос также указывает на расширение в галерее VS, которое это делает. Однако даже после этого я все еще не могу получить подсветку синтаксиса, сам ...
В Visual Studio откройте «Инструменты»> «Параметры»> «Текстовый редактор»> «Расширение файла». Там вы можете добавить определенные расширения и выбрать, какой «редактор» использует Visual Studio для этого расширения.
.SQL
, но не для.CSS
...) – bdukes 16 August 2010 в 17:45