diff options
author | 杨宇千 <crupest@outlook.com> | 2019-10-24 16:56:41 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-10-24 16:56:41 +0800 |
commit | 89c106169bd2a16310fdaa6e0c48a3402d97de3a (patch) | |
tree | c8f5032f86d8a9e5df0117d438ea741cb0a4f613 /Timeline/Services/AvatarFormatException.cs | |
parent | b67a26248d5dde4c3909c29b92b8a182248bdcc1 (diff) | |
download | timeline-89c106169bd2a16310fdaa6e0c48a3402d97de3a.tar.gz timeline-89c106169bd2a16310fdaa6e0c48a3402d97de3a.tar.bz2 timeline-89c106169bd2a16310fdaa6e0c48a3402d97de3a.zip |
...
Diffstat (limited to 'Timeline/Services/AvatarFormatException.cs')
-rw-r--r-- | Timeline/Services/AvatarFormatException.cs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Timeline/Services/AvatarFormatException.cs b/Timeline/Services/AvatarFormatException.cs new file mode 100644 index 00000000..788eabb2 --- /dev/null +++ b/Timeline/Services/AvatarFormatException.cs @@ -0,0 +1,51 @@ +using System;
+using System.Globalization;
+
+namespace Timeline.Services
+{
+ /// <summary>
+ /// Thrown when avatar is of bad format.
+ /// </summary>
+ [Serializable]
+ public class AvatarFormatException : Exception
+ {
+ public enum ErrorReason
+ {
+ /// <summary>
+ /// Decoding image failed.
+ /// </summary>
+ CantDecode,
+ /// <summary>
+ /// Decoding succeeded but the real type is not the specified type.
+ /// </summary>
+ UnmatchedFormat,
+ /// <summary>
+ /// Image is not a square.
+ /// </summary>
+ BadSize
+ }
+
+ public AvatarFormatException() : base(MakeMessage(null)) { }
+ public AvatarFormatException(string message) : base(message) { }
+ public AvatarFormatException(string message, Exception inner) : base(message, inner) { }
+
+ public AvatarFormatException(Avatar avatar, ErrorReason error) : base(MakeMessage(error)) { Avatar = avatar; Error = error; }
+ public AvatarFormatException(Avatar avatar, ErrorReason error, Exception inner) : base(MakeMessage(error), inner) { Avatar = avatar; Error = error; }
+
+ protected AvatarFormatException(
+ System.Runtime.Serialization.SerializationInfo info,
+ System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
+
+ private static string MakeMessage(ErrorReason? reason) =>
+ string.Format(CultureInfo.InvariantCulture, Resources.Services.Exception.AvatarFormatException, reason switch
+ {
+ ErrorReason.CantDecode => Resources.Services.Exception.AvatarFormatExceptionCantDecode,
+ ErrorReason.UnmatchedFormat => Resources.Services.Exception.AvatarFormatExceptionUnmatchedFormat,
+ ErrorReason.BadSize => Resources.Services.Exception.AvatarFormatExceptionBadSize,
+ _ => Resources.Services.Exception.AvatarFormatExceptionUnknownError
+ });
+
+ public ErrorReason? Error { get; set; }
+ public Avatar? Avatar { get; set; }
+ }
+}
|