|
|
@ -358,7 +358,7 @@ export class SSHFileSystem implements vscode.FileSystemProvider {
|
|
|
|
.catch(e => this.handleError('rename', newUri, e, true));
|
|
|
|
.catch(e => this.handleError('rename', newUri, e, true));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Helper function to handle/report errors with proper (and minimal) stacktraces and such
|
|
|
|
// Helper function to handle/report errors with proper (and minimal) stacktraces and such
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 处理错误的受保护方法。
|
|
|
|
* 处理错误的受保护方法。
|
|
|
|
* @protected
|
|
|
|
* @protected
|
|
|
|
* @method handleError
|
|
|
|
* @method handleError
|
|
|
@ -392,14 +392,20 @@ export class SSHFileSystem implements vscode.FileSystemProvider {
|
|
|
|
// Convert SSH2Stream error codes into VS Code errors
|
|
|
|
// Convert SSH2Stream error codes into VS Code errors
|
|
|
|
// 如果 doThrow 为 true 且错误对象有错误代码,则将 SSH2Stream 的错误代码转换为 VS Code 的错误类型。
|
|
|
|
// 如果 doThrow 为 true 且错误对象有错误代码,则将 SSH2Stream 的错误代码转换为 VS Code 的错误类型。
|
|
|
|
if (doThrow && typeof e.code === 'number') {
|
|
|
|
if (doThrow && typeof e.code === 'number') {
|
|
|
|
|
|
|
|
// 保存原始错误对象,以便后续比较
|
|
|
|
const oldE = e;
|
|
|
|
const oldE = e;
|
|
|
|
|
|
|
|
// 根据错误代码进行转换
|
|
|
|
if (e.code === 2) { // No such file or directory
|
|
|
|
if (e.code === 2) { // No such file or directory
|
|
|
|
|
|
|
|
// 将错误转换为 VS Code 的 FileNotFound 错误类型
|
|
|
|
e = vscode.FileSystemError.FileNotFound(uri);
|
|
|
|
e = vscode.FileSystemError.FileNotFound(uri);
|
|
|
|
} else if (e.code === 3) { // Permission denied
|
|
|
|
} else if (e.code === 3) { // Permission denied
|
|
|
|
|
|
|
|
// 将错误转换为 VS Code 的 NoPermissions 错误类型
|
|
|
|
e = vscode.FileSystemError.NoPermissions(uri);
|
|
|
|
e = vscode.FileSystemError.NoPermissions(uri);
|
|
|
|
} else if (e.code === 6) { // No connection
|
|
|
|
} else if (e.code === 6) { // No connection
|
|
|
|
|
|
|
|
// 将错误转换为 VS Code 的 Unavailable 错误类型
|
|
|
|
e = vscode.FileSystemError.Unavailable(uri);
|
|
|
|
e = vscode.FileSystemError.Unavailable(uri);
|
|
|
|
} else if (e.code === 7) { // Connection lost
|
|
|
|
} else if (e.code === 7) { // Connection lost
|
|
|
|
|
|
|
|
// 将错误转换为 VS Code 的 Unavailable 错误类型
|
|
|
|
e = vscode.FileSystemError.Unavailable(uri);
|
|
|
|
e = vscode.FileSystemError.Unavailable(uri);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 如果错误被转换且开启了转换错误的调试标志,则记录转换后的错误信息。
|
|
|
|
// 如果错误被转换且开启了转换错误的调试标志,则记录转换后的错误信息。
|
|
|
@ -414,5 +420,5 @@ export class SSHFileSystem implements vscode.FileSystemProvider {
|
|
|
|
// 如果 doThrow 为 true,则抛出错误;如果 doThrow 是一个函数,则将错误传递给该函数。
|
|
|
|
// 如果 doThrow 为 true,则抛出错误;如果 doThrow 是一个函数,则将错误传递给该函数。
|
|
|
|
if (doThrow === true) throw e;
|
|
|
|
if (doThrow === true) throw e;
|
|
|
|
if (doThrow) return doThrow(e);
|
|
|
|
if (doThrow) return doThrow(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|