improved error propagation, #48034

This commit is contained in:
Johannes Rieken
2019-07-09 16:16:51 +02:00
parent 0289e09e92
commit a4fc9bb8c4
3 changed files with 65 additions and 35 deletions

View File

@@ -132,12 +132,18 @@ class ConsumerFileSystem implements vscode.FileSystem {
return this._proxy.$copy(source, destination, options).catch(ConsumerFileSystem._handleError);
}
private static _handleError(err: any): never {
if (err instanceof Error && err.name === 'ENOPRO') {
throw FileSystemError.Unavailable(err.message);
} else {
// generic error
// generic error
if (!(err instanceof Error)) {
throw new FileSystemError(String(err));
}
// no provider (unknown scheme) error
if (err.name === 'ENOPRO') {
throw FileSystemError.Unavailable(err.message);
}
// file system error
throw new FileSystemError(err.message, err.name as files.FileSystemProviderErrorCode);
}
}