Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Если вы не используете блок ({}
) в качестве тела функции стрелки , тело должно быть выражением :
ArrowFunction:
ArrowParameters[no LineTerminator here] => ConciseBody
ConciseBody:
[lookahead ≠ { ] AssignmentExpression
{ FunctionBody }
Но throw
- это утверждение , а не выражение.
В теории
() => throw x;
эквивалентно
() => { return throw x; }
, что также недействительно.
Если вы опускаете фигурные скобки в функции стрелки, вы создаете неявный возврат , который эквивалентен созданию явного возврата с фигурными скобками, например: () => { return throw 42 };
Однако , вы можете вернуть только выражений , но не выражений . И throw
это утверждение.