Каково использование нового ключевого слова при бросании ошибок в es6? [Дубликат]

Я думаю, что гораздо легче проверить использование регулярного выражения и указать, какие символы разрешены, вместо того, чтобы пытаться проверить все плохие символы. См. Следующие ссылки: http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx http://www.windowsdevcenter.com/pub/a/oreilly /windows/news/csharp_0101.html

Кроме того, выполните поиск для редактора регулярных выражений, они очень помогают. Есть некоторые, вокруг которых даже вывести код в c # для вас.

97
задан Ilia Choly 8 November 2012 в 19:42
поделиться

2 ответа

Оба прекрасны; это явно указано в спецификации :

... Таким образом, вызов функции Error(…) эквивалентен выражению создания объекта new Error(…) с теми же аргументами.

95
ответ дан pimvdb 15 August 2018 в 20:06
поделиться

Error действует как фабрика, на самом деле почти все внутренние конструкторы делают: Array, Object, ... все проверяют что-то вроде if (!(this instanceof Array)){ return new Array(arguments);}

Это говорит о том, что в случае ошибки, даже не нужно бросать объект Error ... throw 'Bad things happened'; будет работать, также вы можете даже бросать литерал объекта для отладки:

throw {message:"You've been a naughty boy",
       context: this,
       args: arguments,
       more:'More custom info here'};
13
ответ дан Elias Van Ootegem 15 August 2018 в 20:06
поделиться
  • 1
    Боюсь, я не совсем согласен. String("abc") не создает объект String, тогда как new String("abc") делает. – pimvdb 8 November 2012 в 19:47
  • 2
    @pimvdb: true, я изменил его на Object = & gt; Object('foo') возвращает строковый объект ... приходят к его веществу почти все собственные конструкторы немного ошибочны ... Number, Boolean, Date, String все дон 't ... Array, Object и Error do, но Event и все конструкторы DOMxxxx -api вызывают ошибки – Elias Van Ootegem 8 November 2012 в 19:49
  • 3
    Это то, что я имею в виду, советуя не использовать конструктор массива ... – Elias Van Ootegem 8 November 2012 в 23:00
  • 4
    В дополнение к бросанию строк: Строка не является ошибкой – alex 11 August 2014 в 08:09
  • 5
    @alex: Предоставлено, что бросание не Error экземпляров (или строковых литералов) теряет трассировку стека. Только ссылка на связанную статью: arguments.callee запрещена в строгом режиме – Elias Van Ootegem 11 August 2014 в 08:25
Другие вопросы по тегам:

Похожие вопросы: