Remove generic exceptions. (#2913)
* Replace instances of Exception with better ones in reflection utils. * Replace instances of Exception with better ones in the websocket project. * Finish replacing generic exceptions. * Tiny tweak to reflection utils for consistency with the .NET library.
This commit is contained in:
@@ -263,7 +263,7 @@ namespace Discord
|
|||||||
var result = await client.PostAsync($"{ApiUrl}/overrides/{id}/dependency", new StringContent($"{{ \"info\": \"{name}\"}}", Encoding.UTF8, "application/json"));
|
var result = await client.PostAsync($"{ApiUrl}/overrides/{id}/dependency", new StringContent($"{{ \"info\": \"{name}\"}}", Encoding.UTF8, "application/json"));
|
||||||
|
|
||||||
if (!result.IsSuccessStatusCode)
|
if (!result.IsSuccessStatusCode)
|
||||||
throw new Exception("Failed to get dependency");
|
throw new HttpRequestException("Failed to get dependency");
|
||||||
|
|
||||||
using (var ms = new MemoryStream())
|
using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace Discord.Commands
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
throw new Exception($"Failed to create \"{ownerType.FullName}\".", ex);
|
throw new TargetInvocationException($"Failed to create \"{ownerType.FullName}\".", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
var constructors = ownerType.DeclaredConstructors.Where(x => !x.IsStatic).ToArray();
|
var constructors = ownerType.DeclaredConstructors.Where(x => !x.IsStatic).ToArray();
|
||||||
if (constructors.Length == 0)
|
if (constructors.Length == 0)
|
||||||
throw new InvalidOperationException($"No constructor found for \"{ownerType.FullName}\".");
|
throw new MissingMethodException($"No constructor found for \"{ownerType.FullName}\".");
|
||||||
else if (constructors.Length > 1)
|
else if (constructors.Length > 1)
|
||||||
throw new InvalidOperationException($"Multiple constructors found for \"{ownerType.FullName}\".");
|
throw new InvalidOperationException($"Multiple constructors found for \"{ownerType.FullName}\".");
|
||||||
return constructors[0];
|
return constructors[0];
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ namespace Discord.Interactions
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
throw new Exception($"Failed to create \"{ownerType.FullName}\".", ex);
|
throw new TargetInvocationException($"Failed to create \"{ownerType.FullName}\".", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static ConstructorInfo GetConstructor(TypeInfo ownerType)
|
private static ConstructorInfo GetConstructor(TypeInfo ownerType)
|
||||||
{
|
{
|
||||||
var constructors = ownerType.DeclaredConstructors.Where(x => !x.IsStatic).ToArray();
|
var constructors = ownerType.DeclaredConstructors.Where(x => !x.IsStatic).ToArray();
|
||||||
if (constructors.Length == 0)
|
if (constructors.Length == 0)
|
||||||
throw new InvalidOperationException($"No constructor found for \"{ownerType.FullName}\".");
|
throw new MissingMethodException($"No constructor found for \"{ownerType.FullName}\".");
|
||||||
else if (constructors.Length > 1)
|
else if (constructors.Length > 1)
|
||||||
throw new InvalidOperationException($"Multiple constructors found for \"{ownerType.FullName}\".");
|
throw new InvalidOperationException($"Multiple constructors found for \"{ownerType.FullName}\".");
|
||||||
return constructors[0];
|
return constructors[0];
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace Discord.Rest
|
|||||||
public static byte[] HexToByteArray(string hex)
|
public static byte[] HexToByteArray(string hex)
|
||||||
{
|
{
|
||||||
if (hex.Length % 2 == 1)
|
if (hex.Length % 2 == 1)
|
||||||
throw new Exception("The binary key cannot have an odd number of digits");
|
throw new ArgumentException("The binary key cannot have an odd number of digits");
|
||||||
|
|
||||||
byte[] arr = new byte[hex.Length >> 1];
|
byte[] arr = new byte[hex.Length >> 1];
|
||||||
|
|
||||||
|
|||||||
@@ -506,7 +506,7 @@ namespace Discord.Audio
|
|||||||
if (_heartbeatTimes.Count != 0 && (now - _lastMessageTime) > intervalMillis &&
|
if (_heartbeatTimes.Count != 0 && (now - _lastMessageTime) > intervalMillis &&
|
||||||
ConnectionState == ConnectionState.Connected)
|
ConnectionState == ConnectionState.Connected)
|
||||||
{
|
{
|
||||||
_connection.Error(new Exception("Server missed last heartbeat"));
|
_connection.Error(new WebSocketException(WebSocketError.InvalidState, "Server missed last heartbeat"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Discord.Audio
|
namespace Discord.Audio
|
||||||
{
|
{
|
||||||
@@ -36,12 +37,12 @@ namespace Discord.Audio
|
|||||||
protected static void CheckError(int result)
|
protected static void CheckError(int result)
|
||||||
{
|
{
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
throw new Exception($"Opus Error: {(OpusError)result}");
|
throw new InvalidDataException($"Opus Error: {(OpusError)result}");
|
||||||
}
|
}
|
||||||
protected static void CheckError(OpusError error)
|
protected static void CheckError(OpusError error)
|
||||||
{
|
{
|
||||||
if ((int)error < 0)
|
if ((int)error < 0)
|
||||||
throw new Exception($"Opus Error: {error}");
|
throw new InvalidDataException($"Opus Error: {error}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
namespace Discord.Audio
|
namespace Discord.Audio
|
||||||
{
|
{
|
||||||
@@ -17,7 +18,7 @@ namespace Discord.Audio
|
|||||||
{
|
{
|
||||||
int error = SecretBoxEasy(outPtr + outputOffset, inPtr + inputOffset, inputLength, nonce, secret);
|
int error = SecretBoxEasy(outPtr + outputOffset, inPtr + inputOffset, inputLength, nonce, secret);
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
throw new Exception($"Sodium Error: {error}");
|
throw new SecurityException($"Sodium Error: {error}");
|
||||||
return inputLength + 16;
|
return inputLength + 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +29,7 @@ namespace Discord.Audio
|
|||||||
{
|
{
|
||||||
int error = SecretBoxOpenEasy(outPtr + outputOffset, inPtr + inputOffset, inputLength, nonce, secret);
|
int error = SecretBoxOpenEasy(outPtr + outputOffset, inPtr + inputOffset, inputLength, nonce, secret);
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
throw new Exception($"Sodium Error: {error}");
|
throw new SecurityException($"Sodium Error: {error}");
|
||||||
return inputLength - 16;
|
return inputLength - 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Discord.Logging;
|
using Discord.Logging;
|
||||||
using Discord.Net;
|
using Discord.Net;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Net.WebSockets;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@@ -43,15 +44,16 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var ex2 = ex as WebSocketClosedException;
|
var ex2 = ex as WebSocketClosedException;
|
||||||
if (ex2?.CloseCode == 4006)
|
if (ex2?.CloseCode == 4006)
|
||||||
CriticalError(new Exception("WebSocket session expired", ex));
|
CriticalError(new WebSocketException(WebSocketError.ConnectionClosedPrematurely, "WebSocket session expired", ex));
|
||||||
else if (ex2?.CloseCode == 4014)
|
else if (ex2?.CloseCode == 4014)
|
||||||
CriticalError(new Exception("WebSocket connection was closed", ex));
|
CriticalError(new WebSocketException(WebSocketError.ConnectionClosedPrematurely, "WebSocket connection was closed", ex));
|
||||||
else
|
else
|
||||||
Error(new Exception("WebSocket connection was closed", ex));
|
Error(new WebSocketException(WebSocketError.ConnectionClosedPrematurely, "WebSocket connection was closed", ex));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Error(new Exception("WebSocket connection was closed"));
|
Error(new WebSocketException(WebSocketError.ConnectionClosedPrematurely, "WebSocket connection was closed"));
|
||||||
return Task.Delay(0);
|
|
||||||
|
return Task.CompletedTask;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ namespace Discord.Net.WebSockets
|
|||||||
}
|
}
|
||||||
catch (Win32Exception ex) when (ex.HResult == HR_TIMEOUT)
|
catch (Win32Exception ex) when (ex.HResult == HR_TIMEOUT)
|
||||||
{
|
{
|
||||||
var _ = OnClosed(new Exception("Connection timed out.", ex));
|
var _ = OnClosed(new WebSocketException(WebSocketError.ConnectionClosedPrematurely, "Connection timed out.", ex));
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException) { }
|
catch (OperationCanceledException) { }
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
var token = Environment.GetEnvironmentVariable("DNET_TEST_TOKEN", EnvironmentVariableTarget.Process);
|
var token = Environment.GetEnvironmentVariable("DNET_TEST_TOKEN", EnvironmentVariableTarget.Process);
|
||||||
if (string.IsNullOrWhiteSpace(token))
|
if (string.IsNullOrWhiteSpace(token))
|
||||||
throw new Exception("The DNET_TEST_TOKEN environment variable was not provided.");
|
throw new ArgumentException("The DNET_TEST_TOKEN environment variable was not provided.");
|
||||||
Client = new DiscordRestClient(new DiscordRestConfig()
|
Client = new DiscordRestClient(new DiscordRestConfig()
|
||||||
{
|
{
|
||||||
LogLevel = LogSeverity.Debug,
|
LogLevel = LogSeverity.Debug,
|
||||||
|
|||||||
Reference in New Issue
Block a user