src/commands: catch errors when starting language server

Added a catch block to the start language server logic
to ensure the rest of the extension activation completes.

Change-Id: I1664da130a981ef8034d1f0e8723b72a4be2d594
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/413424
Run-TryBot: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/src/commands/startLanguageServer.ts b/src/commands/startLanguageServer.ts
index 466cbdf..703c5ee 100644
--- a/src/commands/startLanguageServer.ts
+++ b/src/commands/startLanguageServer.ts
@@ -95,6 +95,10 @@
 			goCtx.serverInfo = toServerInfo(goCtx.languageClient.initializeResult);
 			updateStatus(goCtx, goConfig, true);
 			console.log(`Server: ${JSON.stringify(goCtx.serverInfo, null, 2)}`);
+		} catch (e) {
+			const msg = `Error starting language server: ${e}`;
+			console.log(msg);
+			goCtx.serverOutputChannel?.append(msg);
 		} finally {
 			goCtx.latestConfig = cfg;
 			unlock();
diff --git a/src/goMain.ts b/src/goMain.ts
index af0a716..0213e03 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -102,13 +102,13 @@
 	offerToInstallLatestGoVersion();
 	offerToInstallTools();
 
+	const registerCommand = commands.createRegisterCommand(ctx, goCtx);
+	registerCommand('go.languageserver.restart', commands.startLanguageServer);
+
 	await commands.startLanguageServer(ctx, goCtx)(RestartReason.ACTIVATION);
 
 	initCoverageDecorators(ctx);
 
-	const registerCommand = commands.createRegisterCommand(ctx, goCtx);
-
-	registerCommand('go.languageserver.restart', commands.startLanguageServer);
 	registerCommand('go.builds.run', commands.runBuilds);
 
 	const activeDoc = vscode.window.activeTextEditor?.document;