Я пытаюсь прочитать путь установки для приложения, и я озадачен поведением, которое я получаю. Во-первых, вот код, который не работал (отформатировал его, чтобы он не занимал огромную строку):
LONG status = RegQueryValueEx(
hkRegistry,
"InstallPath",
0,
®Type, (LPBYTE)installPath,
®Size );
if (status == ERROR_SUCCESS) {
// Handle success.
}
Я понял, что это сбой при вызове RegQueryValueEx
, поэтому я решил проверить возвращаемое значение, выбросив его в исключение, добавив:
else {
throw Exception( status );
}
Но потом ... код начал работать и вызов на RegQueryValueEx
завершился успешно. Я был в состоянии повторить это поведение, пока я выбрасывал что-то в else
. Если я закомментирую тело else, ошибка вернется.
Редактировать: Хорошо, я попытался вызвать MessageBox
вместо исключения, и у меня такое же поведение. Если я это закомментирую, он снова перестанет работать.
Есть ли рациональное объяснение этому?