#typescript #error-handling #promise #async-await
#typescript #обработка ошибок #обещание #async-await
Вопрос:
Я пытаюсь найти хороший способ обработки исключений в TypeScript с помощью обещаний с помощью async / await
Вот что у меня есть на данный момент
private async initDirectoryEntry(cacheDirectoryName: string): Promise<DirectoryEntry> {
const cacheDirectoryEntry = await this.resolveLocalFileSystemDirectory(this.file.cacheDirectory);
return this.file.getDirectory(cacheDirectoryEntry as DirectoryEntry, cacheDirectoryName, { create: true })
}
private async resolveLocalFileSystemDirectory(path: string): Promise<DirectoryEntry|Error> {
return new Promise<DirectoryEntry>((resolve, reject) =>
this.localFileSystem.resolveLocalFileSystemURL(
path,
(entry) => {
if (!entry.isDirectory) {
reject(new Error(`${path} is not a directory`))
} else {
resolve(entry as DirectoryEntry);
}
},
(error) => reject(error))
)
}
Сам код компилируется, но меня раздражало, что мне приходилось указывать |Error
в возвращаемом типе Promise и выполнять явное приведение в initDirectoryEntry .
Не уверен, что я делаю здесь что-то неправильное. Я думаю, я должен быть в состоянии сказать throws Exception
что-то вроде или что-то в этом роде и перехватить это соответствующим образом.
Комментарии:
1.
|Error
здесь неверно, потомуT
что inPromise<T>
— это тип разрешенного значения.reject
всегда получаетany
значение. Так что в вашем случаеPromise<DirectoryEntry>
достаточно. github.com/microsoft/TypeScript/blob/master/lib /…2. Обработка ошибок при
await
редактировании обещаний выполняется сtry
помощью /catch
, но, похоже, это не ваш актуальный вопрос и не имеет отношения к примеру кода. Не могли бы вы обновить заголовок своего вопроса?