Skip to content

Commit 6cd3869

Browse files
CODE RUB: Implement TryCatch
1 parent fa17fff commit 6cd3869

File tree

2 files changed

+31
-88
lines changed

2 files changed

+31
-88
lines changed

LibraryManagement.Api/Services/Foundations/Readers/ReaderService.Exceptions.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using LibraryManagement.Api.Models.Foundations.Readers;
88
using LibraryManagement.Api.Models.Foundations.Readers.Exceptions;
99
using Microsoft.Data.SqlClient;
10+
using Microsoft.EntityFrameworkCore;
1011
using Xeptions;
1112

1213
namespace LibraryManagement.Api.Services.Foundations.Readers
@@ -34,6 +35,20 @@ private async ValueTask<Reader> TryCatch(ReturningReaderFunction returningReader
3435
{
3536
throw CreateAndLogValidationException(notFoundReaderException);
3637
}
38+
catch (DbUpdateConcurrencyException dbUpdateConcurrencyException)
39+
{
40+
var lockedReaderException =
41+
new LockedReaderException(dbUpdateConcurrencyException);
42+
43+
throw CreateAndLogDependencyValidationException(lockedReaderException);
44+
}
45+
catch (DbUpdateException dbUpdateException)
46+
{
47+
var failedReaderStorageException =
48+
new FailedReaderStorageException(dbUpdateException);
49+
50+
throw CreateAndLogDependencyException(failedReaderStorageException);
51+
}
3752
catch (SqlException sqlException)
3853
{
3954
var failedReaderStorageException =
@@ -115,5 +130,13 @@ private ReaderServiceException CreateAndLogServiceException(Xeption exception)
115130

116131
return readerServiceException;
117132
}
133+
134+
private ReaderDependencyException CreateAndLogDependencyException(Xeption exception)
135+
{
136+
var readerDependencyException = new ReaderDependencyException(exception);
137+
this.loggingBroker.LogError(readerDependencyException);
138+
139+
return readerDependencyException;
140+
}
118141
}
119142
}

LibraryManagement.Api/Services/Foundations/Readers/ReaderService.cs

Lines changed: 8 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
using LibraryManagement.Api.Brokers.Loggings;
77
using LibraryManagement.Api.Brokers.Storages;
88
using LibraryManagement.Api.Models.Foundations.Readers;
9-
using LibraryManagement.Api.Models.Foundations.Readers.Exceptions;
10-
using Microsoft.Data.SqlClient;
11-
using Microsoft.EntityFrameworkCore;
129

1310
namespace LibraryManagement.Api.Services.Foundations.Readers
1411
{
@@ -49,94 +46,17 @@ public ValueTask<Reader> RetrieveReaderByIdAsync(Guid readerId) =>
4946
return maybeReader;
5047
});
5148

52-
public async ValueTask<Reader> ModifyReaderAsync(Reader reader)
49+
public ValueTask<Reader> ModifyReaderAsync(Reader reader) =>
50+
TryCatch(async () =>
5351
{
54-
try
55-
{
56-
ValidateReaderOnModify(reader);
57-
58-
Reader maybeReader =
59-
await this.storageBroker.SelectReaderByIdAsync(reader.ReaderId);
60-
61-
ValidateAgainstStorageReaderOnModify(reader, maybeReader);
62-
63-
return await this.storageBroker.UpdateReaderAsync(reader);
64-
}
65-
catch (NullReaderException nullReaderException)
66-
{
67-
var readerValidationException =
68-
new ReaderValidationException(nullReaderException);
69-
70-
this.loggingBroker.LogError(readerValidationException);
71-
72-
throw readerValidationException;
73-
}
74-
catch (InvalidReaderException invalidReaderException)
75-
{
76-
var readerValidationException =
77-
new ReaderValidationException(invalidReaderException);
78-
79-
this.loggingBroker.LogError(readerValidationException);
80-
81-
throw readerValidationException;
82-
}
83-
catch (NotFoundReaderException notFoundReaderException)
84-
{
85-
var readerValidationException =
86-
new ReaderValidationException(notFoundReaderException);
87-
88-
this.loggingBroker.LogError(readerValidationException);
89-
90-
throw readerValidationException;
91-
}
92-
catch (SqlException sqlException)
93-
{
94-
var failedReaderStorageException =
95-
new FailedReaderStorageException(sqlException);
96-
97-
var readerDependencyException =
98-
new ReaderDependencyException(failedReaderStorageException);
52+
ValidateReaderOnModify(reader);
9953

100-
this.loggingBroker.LogCritical(readerDependencyException);
101-
102-
throw readerDependencyException;
103-
}
104-
catch (DbUpdateConcurrencyException dbUpdateConcurrencyException)
105-
{
106-
var lockedReaderException =
107-
new LockedReaderException(dbUpdateConcurrencyException);
108-
109-
var readerDependencyValidationException =
110-
new ReaderDependencyValidationException(lockedReaderException);
111-
112-
this.loggingBroker.LogError(readerDependencyValidationException);
113-
114-
throw readerDependencyValidationException;
115-
}
116-
catch (DbUpdateException dbUpdateException)
117-
{
118-
var failedReaderStorageException =
119-
new FailedReaderStorageException(dbUpdateException);
120-
121-
var readerDependencyException =
122-
new ReaderDependencyException(failedReaderStorageException);
123-
124-
this.loggingBroker.LogError(readerDependencyException);
125-
126-
throw readerDependencyException;
127-
}
128-
catch (Exception exception)
129-
{
130-
var failedReaderServiceException =
131-
new FailedReaderServiceException(exception);
132-
133-
var readerServiceException =
134-
new ReaderServiceException(failedReaderServiceException);
54+
Reader maybeReader =
55+
await this.storageBroker.SelectReaderByIdAsync(reader.ReaderId);
13556

136-
this.loggingBroker.LogError(readerServiceException);
57+
ValidateAgainstStorageReaderOnModify(reader, maybeReader);
13758

138-
throw readerServiceException;
139-
}
140-
}
59+
return await this.storageBroker.UpdateReaderAsync(reader);
60+
});
14161
}
14262
}

0 commit comments

Comments
 (0)