Как вы можете получить строку ошибки по умолчанию, используемую при возникновении необязательной ошибки nil? - PullRequest
1 голос
/ 24 января 2020

Мы реализуем нашу собственную версию метода .required() для опциональных функций, где вместо простого принудительного развертывания с выдачей ошибки вы получаете файл, функцию и номер строки, где произошло нарушение, а также предоставленное сообщение о том, что пошло не так.

Само сообщение является необязательным, поэтому, если пользователь не указывает его, мы хотим, чтобы наше сообщение отправляло то же сообщение, что и исключение Swift по умолчанию для принудительного развертывания nil, необязательно. По умолчанию используется следующий текст: *

Неожиданно обнаружен ноль при развертывании необязательного значения

Когда мы не показываем наше настраиваемое сообщение, мы, конечно, хотим, чтобы наше отображало то же самое текст для анализа журнала. Хотя мы можем просто жестко закодировать вышеуказанную строку, мне было интересно, есть ли способ извлечь ее из встроенной ошибки. Как-то так ...

let ourMsg = UnexpectedNilError.localizedDescription

Однако не уверен, что стоит вместо UnexpectedNilError выше, или если это вообще возможно. Не так уж и много. Просто интересно, есть ли стандартные ошибки, которые мы можем использовать здесь.

1 Ответ

2 голосов
/ 24 января 2020

После быстрого поиска в repo Swift сообщение об ошибке находится в файле Optional.swift, строка 314 :

_preconditionFailure(
  "Unexpectedly found nil while unwrapping an Optional value",
  file: StaticString(_start: _filenameStart,
                     utf8CodeUnitCount: _filenameLength,
                     isASCII: _filenameIsASCII),
  line: UInt(_line))

Кажется, что также достаточно жестко закодирован, передаваясь непосредственно в качестве параметра _preconditionFailure, поэтому не похоже, что вы можете получить его как строковое значение в своем коде.

...