Skip to content

Commit 233c070

Browse files
committed
added try catch
1 parent 9c7ea43 commit 233c070

File tree

5 files changed

+58
-2
lines changed

5 files changed

+58
-2
lines changed

src/DocumentFormat.OpenXml.Features/DocumentFormat.OpenXml.Features.csproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,16 @@
2525
</PackageReference>
2626
</ItemGroup>
2727

28+
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
29+
<PackageReference Include="System.IO.Packaging" />
30+
</ItemGroup>
31+
32+
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
33+
<PackageReference Include="System.IO.Packaging" />
34+
</ItemGroup>
35+
36+
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0'">
37+
<PackageReference Include="System.IO.Packaging" />
38+
</ItemGroup>
39+
2840
</Project>

src/DocumentFormat.OpenXml.Framework/Packaging/OpenXmlPart.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,25 @@ internal void Load(OpenXmlPackage? openXmlPackage, OpenXmlPart? parent, Uri uriT
4343

4444
SetPackage(openXmlPackage, parent);
4545

46-
// TODO: should we delay load?
47-
var part = _openXmlPackage.Features.GetRequired<IPackageFeature>().Package.GetPart(uriTarget);
46+
// add the _uri to be reserved
47+
IPackagePart? part = null;
48+
try
49+
{
50+
part = _openXmlPackage.Features.GetRequired<IPackageFeature>().Package.GetPart(uriTarget);
51+
}
52+
catch (InvalidOperationException ex)
53+
{
54+
var errorMessage = SR.Format(
55+
ExceptionMessages.SpecifiedPartNotFound,
56+
uriTarget.OriginalString, ex.StackTrace);
57+
throw new OpenXmlPackageException(errorMessage);
58+
}
59+
catch (Exception)
60+
{
61+
throw;
62+
}
4863

64+
// TODO: should we delay load?
4965
Features.Set<IPackagePartFeature>(new PackagePartFeature(part));
5066

5167
if (IsContentTypeFixed && !IsValidContentType(part))
@@ -59,6 +75,17 @@ internal void Load(OpenXmlPackage? openXmlPackage, OpenXmlPart? parent, Uri uriT
5975
throw new OpenXmlPackageException(errorMessage);
6076
}
6177

78+
if (part is null)
79+
{
80+
var errorMessage = SR.Format(
81+
ExceptionMessages.InvalidPartContentType,
82+
part.Uri.OriginalString,
83+
part.ContentType,
84+
ContentType);
85+
86+
throw new OpenXmlPackageException(errorMessage);
87+
}
88+
6289
// add the _uri to be reserved
6390
Features.GetRequired<IPartUriFeature>().ReserveUri(ContentType, Uri);
6491
}

src/DocumentFormat.OpenXml.Framework/Resources/ExceptionMessages.Designer.cs

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/DocumentFormat.OpenXml.Framework/Resources/ExceptionMessages.resx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,8 @@
417417
<data name="EncryptedPackageNotSupported" xml:space="preserve">
418418
<value>Encrypted packages are not supported.</value>
419419
</data>
420+
<data name="SpecifiedPartNotFound" xml:space="preserve">
421+
<value> Part: {0} doesn't exist in the package.
422+
{1}</value>
423+
</data>
420424
</root>

test/DocumentFormat.OpenXml.Tests.Assets/DocumentFormat.OpenXml.Tests.Assets.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
<ItemGroup>
77
<EmbeddedResource Include="assets\**\*" />
88
</ItemGroup>
9+
<ItemGroup>
10+
<PackageReference Include="System.IO.Packaging" />
11+
</ItemGroup>
912
</Project>

0 commit comments

Comments
 (0)