diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs index 2635e29..152d66e 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject21.cs @@ -50,7 +50,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject21(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -70,6 +71,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -96,7 +98,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs index 418b6c5..25e7d1b 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject36.cs @@ -49,7 +49,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject36(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -69,6 +70,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -95,7 +97,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs index 7f7686e..063ec29 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject37.cs @@ -46,7 +46,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject37(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -66,6 +67,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -92,7 +94,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs index 0b357a2..72470ff 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject38.cs @@ -50,7 +50,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject38(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -70,6 +71,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch (Exception ex) { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}", ex); } } @@ -96,7 +98,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs index ecc672b..47f3a7f 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject40.cs @@ -48,7 +48,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject40(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -68,6 +69,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -95,7 +97,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs index 5a7e4e6..6378e91 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject41.cs @@ -48,7 +48,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject41(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -68,6 +69,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -95,7 +97,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; } diff --git a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs index 70d7cea..7af42fd 100644 --- a/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs +++ b/SpineViewer/Spine/Implementations/SpineObject/SpineObject42.cs @@ -48,7 +48,8 @@ namespace SpineViewer.Spine.Implementations.SpineObject public SpineObject42(string skelPath, string atlasPath) : base(skelPath, atlasPath) { - atlas = new Atlas(AtlasPath, textureLoader); + try { atlas = new Atlas(AtlasPath, textureLoader); } + catch (Exception ex) { throw new InvalidDataException($"Failed to load atlas '{atlasPath}'", ex); } try { // 先尝试二进制文件 @@ -68,6 +69,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject catch { // 都不行就报错 + atlas.Dispose(); throw new InvalidDataException($"Unknown skeleton file format {SkelPath}"); } } @@ -95,7 +97,7 @@ namespace SpineViewer.Spine.Implementations.SpineObject protected override void Dispose(bool disposing) { base.Dispose(disposing); - atlas.Dispose(); + atlas?.Dispose(); } public override string FileVersion { get => skeletonData.Version; }