При попытке найти раздел реестра, который не существует, он генерирует необработанное исключение.C# - необработанное исключение «System.NullReferenceException»
Похоже, когда checkKey возвращается null, и он пытается продолжить .GetValue, он выдает исключение.
public static string getDirectory(string path, string subpath)
{
if (checkKey(path).GetValue(subpath) != null)
{
return checkKey(path).GetValue(subpath).ToString();
}
else
{
return null;
}
}
Я попытался, если (checkKey (путь)! = NULL & checkKey (путь) .GetValue (подпуть)! = NULL), но это не решило проблему.
public static RegistryKey checkKey(string key)
{
if (getBaseCurrent64().OpenSubKey(key) != null)
{
return getBaseCurrent64().OpenSubKey(key);
}
else if (getBaseLocal64().OpenSubKey(key) != null)
{
return getBaseLocal64().OpenSubKey(key);
}
return null;
}
попытка поймать разрешит это, но я чувствую, что делаю это неправильно.
Уважение,
Ужасно: не вызывайте метод дважды. Вызовите его один раз, поместите возвращаемое значение в переменную, а затем решите, что с ним делать. – nvoigt
'if (checkKey (path)! = Null && checkKey (path) .GetValue (subpath)! = Null)', причем только одна '&' вторая часть все равно будет выполнена, что вызывает ошибку. '&&' "short circuit", что означает, что если первое не соответствует действительности, второе не будет проверяться. – Corak