C# - 未处理的异常“System.NullReferenceException”
本文关键字:System NullReferenceException 异常 未处理 | 更新日期: 2023-09-27 18:29:45
当尝试查找不存在的注册表项时,它会引发未经处理的异常。
看起来当checkKey返回为空并且它正在尝试继续.获取值 它会引发异常。
public static string getDirectory(string path, string subpath)
{
if (checkKey(path).GetValue(subpath) != null)
{
return checkKey(path).GetValue(subpath).ToString();
}
else
{
return null;
}
}
我试过如果(checkKey(path(!= null & checkKey(path(。GetValue(subpath( != 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;
}
尝试捕获可以解决这个问题,但我觉得我做错了。
亲切问候
你可以在返回 null 时执行 GetValue((。尝试将代码更改为
public static string getDirectory(string path, string subpath)
{
RegistryKey key = checkKey(path);
if (key != null && key.GetValue(subpath) != null)
{
return key.GetValue(subpath).ToString();
}
else
{
return null;
}
}
您需要使用逻辑 AND 运算符 ( &&
( 而不是按位 AND 运算符 ( &
(,将代码更改为:
if (checkKey(path) != null && checkKey(path).GetValue(subpath) != null)