Nullreferenceexception 7 days to die как исправить

Обновлено: 02.07.2024

Прошу помощи, надоело терпеть постоянные вылеты из игры (пиратка alpha10.4 b10). Игра вылетает без ошибки, вылетает с ошибкой, просто зависает (не отвечает), выбивает экран смерти. Причину найти никак не могу, не зависимо от настроек графики всё равно вылетает. Могу играть 2-3 часа без вылетов, а могу собрать пару вещей и сразу вылет. Естественно игра не сохраняется, что больше всего достаёт, вылеты - хрен с ними, если бы сейвило игру. Перечитал много информации, решения никакого не встречал, все ответы банальные, переустанови (уже раз 6 это сделал), поставь х64, поставь х32(86) - разницы никакой.

Athlon II x2 260 - 4.0 GHz

NVidia GeForce GT-240 1gb 128 bit

ребят тоже когда создаю мир появляется консоль и написано нет памяти

Возможно, не хватает оперативки игре. Или жёсткий очень сильно загруженю (Что врядли, но у меня другие игры вылетали при создании мира, когда на системном было совсем 0).

нет звука, что делать?

пацаны 7_day меню долго грузится я жду 30 мин и ничего что делать?

От 185.202.212.173: пацаны 7_day меню долго грузится я жду 30 мин и ничего что делать?

Сэйвы от 15 альфы не будут работать в 16 - возможно в этом проблема.

Персонаж иногда не идет вперед, просто останавливается, а иной раз продолжает идти после отпускания клавиши, с клавиатурой все ок, может кто знает, в чем причина данной проблемы?

Отключить геймпад, если он есть.

Проц меняй и будет всё нормально - так как у самого 4-х ядерный розогнаный из-за розгона и вылетает.

24 сен. 2014 в 4:44

since the last Alpha i can't enter the world to my 'Project'. A toolbar opens and it says 'NullReferenceException: Object reference not set to an instance of an object'
Can somedody help me? German or English

24 сен. 2014 в 6:08 I had the same thing happen to me. I was not paying attention when I started the game and did not notice the 9.3x update added 2 save games to my list. Mygame and mygame1 both of those game saves are corrupt delete them then find the save game you where playing before and it should work fine.


24 сен. 2014 в 7:59

As far as I know the latest patch accidentally included an instance of the old Save Game folder in the actual game directory with 2 bad saves in it, "My Game" and "My Game1". The updated game uses the My Documents folder for saving by default. As for the old folder path, it seems to cause MANY issues.
NOTE: If you do a Verify Integrity of Game Cache these saves and folder will re-appear thus requiring these steps again. This is likely to be a problem until a new build comes out.

In the Steam Client, Games Library
Right-Click 7 Days To Die
Select and click Properties
Select and click the Local Files tab
Click the Browse Local Files Button

Navigate to the \7 Days To Die\Data\Worlds\Navezgane folder by doing the following:
Double-click the Data folder
Double-click the Worlds folder
Double-click the Navezgane folder
If you see a folder called Saves, delete it.

15 ч. назад Console Error on Multiplayer null reference exception object reference not set to an instance of an object

I have a Trouble with the Console on my Navezgane Multiplayer Map.
I play with a friend on Multiplayer without any Mods.
Sometimes in a specific Region, when my Friend is doing things, my Console opens up an spam with me this :
null reference exception object reference not set to an instance of an object
sometimes harder, sometimes once.
so i cant close the console until the next error is displayed.

I already checked the Datas with Steam an deleted :
7Days to Die / Saves / Empty / PrefabEditor
7Days to Die / Data / Worlds / Empty

Is there any Fix for this , without deleting the Old Game ?


7 ч. назад

Object reference not set to an instance of an object.

В экземпляре объекта не задана ссылка на объект.


55.2k 7 7 золотых знаков 62 62 серебряных знака 134 134 бронзовых знака


30.5k 18 18 золотых знаков 75 75 серебряных знаков 98 98 бронзовых знаков Добавил важный каноничный ответ с английского SO What is a NullReferenceException and how do I fix it?. Теперь можно закрывать большинство вопросов про NRE как дубль, а не ковыряться с каждым отдельным случаем. Всё равно почти всегда одно и то же.

Отладка

Как определить источник ошибки? Кроме изучения, собственно, исключения, которое будет выброшено именно там, где оно произошло, вы можете воспользоваться общими рекомендациями по отладке в Visual Studio: поставьте точки останова в ключевых точках, изучите значения переменных, либо расположив курсор мыши над переменной, либо открыв панели для отладки: Watch, Locals, Autos.

Если вы хотите определить место, где значение ссылки устанавливается или не устанавливается, нажмите правой кнопкой на её имени и выберите "Find All References". Затем вы можете поставить точки останова на каждой найденной строке и запустить приложение в режиме отладки. Каждый раз, когда отладчик остановится на точке останова, вы можете удостовериться, что значение верное.

Следя за ходом выполнения программы, вы придёте к месту, где значение ссылки не должно быть null , и определите, почему не присвоено верное значение.

Примеры

Несколько общих примеров, в которых возникает исключение.

Цепочка

Если ref1 , ref2 или ref3 равно null , вы получите NullReferenceException . Для решения проблемы и определения, что именно равно null , вы можете переписать выражение более простым способом:

Неявно

То же верно для вложенных инициализаторов:

Несмотря на использование ключевого слова new , создаётся только экземпляр класса Book , но экземпляр Person не создаётся, поэтому свойство Author остаётся null .

Массив

Элементы массива

Массив массивов

Collection/List/Dictionary

События

Неудачное именование переменных

Если бы в коде ниже у локальных переменных и полей были разные имена, вы бы обнаружили, что поле не было инициализировано:

Можно избежать проблемы, если использовать префикс для полей:

Если вы возвращаете пустую модель (или свойство модели) в контроллере, то вью бросит исключение при попытке доступа к ней:

Способы избежать

Явно проверять на null , пропускать код

Если вы ожидаете, что ссылка в некоторых случаях будет равна null , вы можете явно проверить на это значение перед доступом к членам экземпляра:

Явно проверять на null , использовать значение по умолчанию

Методы могут возвращать null , например, если не найден требуемый экземпляр. В этом случае вы можете вернуть значение по умолчанию:

Явно проверять на null , выбрасывать своё исключение

Вы также можете бросать своё исключение, чтобы позже его поймать:

Использовать Debug.Assert для проверки на null для обнаружения ошибки до бросания исключения

Если во время разработки вы знаете, что метод может, но вообще-то не должен возвращать null , вы можете воспользоваться Debug.Assert для быстрого обнаружения ошибки:

Однако эта проверка не будет работать в релизной сборке, и вы снова получите NullReferenceException , если book == null .

Использовать GetValueOrDefault() для Nullable типов

Краткая запись для задания значения по умолчанию:

Это оператор безопасного доступа к членам, также известный как оператор Элвиса за специфическую форму. Если выражение слева от оператора равно null , то правая часть игнорируется, и результатом считается null . Например:

Разумеется, если переменная person может быть равна null , то надо проверять и её. Также можно использовать операторы ?. и ?? вместе, чтобы предоставить значение по умолчанию:

Если любой член в цепочке может быть null , то можно полностью обезопасить себя (хотя, конечно, архитектуру стоит поставить под сомнение):


30.5k 18 18 золотых знаков 75 75 серебряных знаков 98 98 бронзовых знаков @VladD Есть слишком много случаев, когда null — допустимое значение: ленивая инициализация, отсутствие значения "не задано" у типа и т. п. Не везде получается избавиться от null. Так что рекомендация сводится к "старайтесь не использовать null, если это возможно". Это да, есть случаи, когда null валиден. Тогда, вероятно, первым вопросом должно быть: валиден ли null в этой точке? Если да, нужна проверка на null и адекватная реакция. Если нет, то код верен, а проблема где-то раньше (скорее всего в инициализации).

В дополнение к ответу @Discord @Squidward @Athari @Kyubey, давайте рассмотрим вопрос с другой стороны.

Если у вас в процессе выполнения программы случился NullReferenceException при доступе по какой-то ссылке, вы должны прежде всего задать себе важный вопрос:

а имеет ли право эта ссылка иметь значение null ?

Во многих случаях правильным ответом будет «нет», и значит, исправлять придётся истинную причину ошибки, которая находится в другом месте, и произошла раньше.

Пример: если у вас есть такой класс:

Так вот, мотор у машины быть обязан в любом случае, всегда. А вот водитель может в принципе и не сидеть в машине.

Поэтому если вы видите, что обращение к engine.HorsePower падает с NullReferenceException , реальная проблема состоит в том, что вы забыли инициализировать engine в конструкторе. Поэтому и исправлять ошибку нужно не в точке, где падает, а в том месте, которое реально должно бы обеспечить ненулевое значение engine .

А вот если вылетает обращение driver.Age , то здесь уже проблема прямо в точке обращения, вам необходимо сначала проверить, что driver != null , а потом уж обращаться.

Если же ссылка имеет право быть null -ом, то в этом случае нужно корректно обработать и этот случай.

Важное замечание: Если вашу функцию вызывает «внешний мир», вы не должны рассчитывать, что вашей функции передадут хорошие, правильные аргументы. Даже если вы требуете, чтобы объект, который вам передан, не был null -ом, всё равно вам могут передать неправильный объект. Поэтому для функций, доступных внешним модулям, необходимо проверять аргументы на null сразу же в начале кода, и бросать нужное исключение:

Где именно проводить границу между «внутренним» и «внешним» миром, вопрос достаточно нетривиальный. Обычно эта граница есть граница модуля (сборки), или даже той её логической части, которая находится в вашей ответственности. Слишком мелкое дробление ведёт к повторению бессмысленного кода (одна часть программы не доверяет другой и постоянно перепроверяет её). Слишком крупное дробление ведёт к необходимости держать в голове миллионы зависимостей («могу я тут передавать null или нет?»). Пользуйтесь здравым смыслом и личным опытом.

В этом случае сам компилятор сможет проконтролировать, что вы забыли проинициализировать значение поля engine , и выдать вам предупреждение.

Более подробно

Если среда выполнения выбрасывает исключение NullReferenceException , то это всегда означает одно: вы пытаетесь воспользоваться ссылкой. И эта ссылка не инициализирована (или была инициализирована, но уже не инициализирована).

Это означает, что ссылка равна null , а вы не сможете вызвать методы через ссылку, равную null . В простейшем случае:

Этот код выбросит исключение NullReferenceException на второй строке, потому что вы не можете вызвать метод ToUpper() у ссылки на string , равной null .

Вкратце

Как и любое другое значение, null может передаваться от объекта к объекту, от метода к методу. Если нечто равно null в методе "А", вполне может быть, что метод "В" передал это значение в метод "А".

Остальная часть статьи описывает происходящее в деталях и перечисляет распространённые ошибки, которые могут привести к исключению NullReferenceException .

Читайте также: