Catch Request/Event handler errors at dispatcher level (#1610)

* Catch Request/Event handler errors at dispatcher level

* Fix tests

* Use Exception overload of SendError

* Fix tests
This commit is contained in:
Charles Gagnon
2022-07-29 17:31:36 -07:00
committed by GitHub
parent 3294a52ad9
commit fd00114a0e
32 changed files with 1326 additions and 1921 deletions

View File

@@ -1119,16 +1119,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
RequestContext<bool> requestContext)
{
Logger.Write(TraceEventType.Verbose, "HandleCancelConnectRequest");
try
{
bool result = CancelConnect(cancelParams);
await requestContext.SendResult(result);
}
catch (Exception ex)
{
await requestContext.SendError(ex.ToString());
}
bool result = CancelConnect(cancelParams);
await requestContext.SendResult(result);
}
/// <summary>
@@ -1139,16 +1131,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
RequestContext<bool> requestContext)
{
Logger.Write(TraceEventType.Verbose, "HandleDisconnectRequest");
try
{
bool result = Instance.Disconnect(disconnectParams);
await requestContext.SendResult(result);
}
catch (Exception ex)
{
await requestContext.SendError(ex.ToString());
}
bool result = Instance.Disconnect(disconnectParams);
await requestContext.SendResult(result);
}
@@ -1403,34 +1387,27 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
string connectionString = string.Empty;
ConnectionInfo info;
SqlConnectionStringBuilder connStringBuilder;
try
// set connection string using connection uri if connection details are undefined
if (connStringParams.ConnectionDetails == null)
{
// set connection string using connection uri if connection details are undefined
if (connStringParams.ConnectionDetails == null)
{
TryFindConnection(connStringParams.OwnerUri, out info);
connStringBuilder = CreateConnectionStringBuilder(info.ConnectionDetails);
}
// set connection string using connection details
else
{
connStringBuilder = CreateConnectionStringBuilder(connStringParams.ConnectionDetails as ConnectionDetails);
}
if (!connStringParams.IncludePassword)
{
connStringBuilder.Password = ConnectionService.PasswordPlaceholder;
}
// default connection string application name to always be included unless set to false
if (!connStringParams.IncludeApplicationName.HasValue || connStringParams.IncludeApplicationName.Value == true)
{
connStringBuilder.ApplicationName = "sqlops-connection-string";
}
connectionString = connStringBuilder.ConnectionString;
TryFindConnection(connStringParams.OwnerUri, out info);
connStringBuilder = CreateConnectionStringBuilder(info.ConnectionDetails);
}
catch (Exception e)
// set connection string using connection details
else
{
await requestContext.SendError(e.ToString());
connStringBuilder = CreateConnectionStringBuilder(connStringParams.ConnectionDetails as ConnectionDetails);
}
if (!connStringParams.IncludePassword)
{
connStringBuilder.Password = ConnectionService.PasswordPlaceholder;
}
// default connection string application name to always be included unless set to false
if (!connStringParams.IncludeApplicationName.HasValue || connStringParams.IncludeApplicationName.Value == true)
{
connStringBuilder.ApplicationName = "sqlops-connection-string";
}
connectionString = connStringBuilder.ConnectionString;
await requestContext.SendResult(connectionString);
}