diff --git a/src/StackExchange.Redis/RedisChannel.cs b/src/StackExchange.Redis/RedisChannel.cs index f6debd1eb..2e0d7fc6c 100644 --- a/src/StackExchange.Redis/RedisChannel.cs +++ b/src/StackExchange.Redis/RedisChannel.cs @@ -302,9 +302,12 @@ public static implicit operator RedisChannel(byte[]? key) { return Encoding.UTF8.GetString(arr); } - catch + catch (Exception e) when // Only catch exception throwed by Encoding.UTF8.GetString + (e is DecoderFallbackException + || e is ArgumentException + || e is ArgumentNullException) { - return BitConverter.ToString(arr); + return BitConverter.ToString(arr); } } diff --git a/src/StackExchange.Redis/RedisKey.cs b/src/StackExchange.Redis/RedisKey.cs index 9bfc041b1..0ee83d560 100644 --- a/src/StackExchange.Redis/RedisKey.cs +++ b/src/StackExchange.Redis/RedisKey.cs @@ -299,9 +299,12 @@ public static implicit operator RedisKey(byte[]? key) { return Encoding.UTF8.GetString(arr, 0, length); } - catch + catch (Exception e) when // Only catch exception throwed by Encoding.UTF8.GetString + (e is DecoderFallbackException + || e is ArgumentException + || e is ArgumentNullException) { - return BitConverter.ToString(arr, 0, length); + return BitConverter.ToString(arr, 0, length); } } } diff --git a/src/StackExchange.Redis/RedisValue.cs b/src/StackExchange.Redis/RedisValue.cs index 0eb1a5812..750e9ed83 100644 --- a/src/StackExchange.Redis/RedisValue.cs +++ b/src/StackExchange.Redis/RedisValue.cs @@ -784,7 +784,10 @@ private static bool TryParseDouble(ReadOnlySpan blob, out double value) { return Format.GetString(span); } - catch + catch (Exception e) when // Only catch exception throwed by Encoding.UTF8.GetString + (e is DecoderFallbackException + || e is ArgumentException + || e is ArgumentNullException) { return ToHex(span); }