Skip to content

Commit 671374d

Browse files
committed
Try() - move to separate file
1 parent 81cc39c commit 671374d

File tree

3 files changed

+85
-76
lines changed

3 files changed

+85
-76
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
4+
namespace CSharpFunctionalExtensions
5+
{
6+
public partial struct Result
7+
{
8+
private static readonly Func<Exception, string> DefaultTryErrorHandler = exc => exc.Message;
9+
10+
public static Result Try(Action action, Func<Exception, string> errorHandler = null)
11+
{
12+
errorHandler = errorHandler ?? DefaultTryErrorHandler;
13+
14+
try
15+
{
16+
action();
17+
return Ok();
18+
}
19+
catch (Exception exc)
20+
{
21+
string message = errorHandler(exc);
22+
return Fail(message);
23+
}
24+
}
25+
26+
public static Result<T> Try<T>(Func<T> func, Func<Exception, string> errorHandler = null)
27+
{
28+
errorHandler = errorHandler ?? DefaultTryErrorHandler;
29+
30+
try
31+
{
32+
return Ok(func());
33+
}
34+
catch (Exception exc)
35+
{
36+
string message = errorHandler(exc);
37+
return Fail<T>(message);
38+
}
39+
}
40+
41+
public static async Task<Result<T>> Try<T>(Func<Task<T>> func, Func<Exception, string> errorHandler = null)
42+
{
43+
errorHandler = errorHandler ?? DefaultTryErrorHandler;
44+
45+
try
46+
{
47+
var result = await func().ConfigureAwait(Result.DefaultConfigureAwait);
48+
return Ok(result);
49+
}
50+
catch (Exception exc)
51+
{
52+
string message = errorHandler(exc);
53+
return Fail<T>(message);
54+
}
55+
}
56+
57+
public static Result<T, E> Try<T, E>(Func<T> func, Func<Exception, E> errorHandler)
58+
{
59+
try
60+
{
61+
return Ok<T, E>(func());
62+
}
63+
catch (Exception exc)
64+
{
65+
E error = errorHandler(exc);
66+
return Fail<T, E>(error);
67+
}
68+
}
69+
70+
public static async Task<Result<T, E>> Try<T, E>(Func<Task<T>> func, Func<Exception, E> errorHandler)
71+
{
72+
try
73+
{
74+
var result = await func().ConfigureAwait(DefaultConfigureAwait);
75+
return Ok<T, E>(result);
76+
}
77+
catch (Exception exc)
78+
{
79+
E error = errorHandler(exc);
80+
return Fail<T, E>(error);
81+
}
82+
}
83+
}
84+
}

CSharpFunctionalExtensions/Result/Result.cs

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -219,82 +219,6 @@ public static Result FirstFailureOrSuccess(params Result[] results)
219219
return Ok();
220220
}
221221

222-
private static readonly Func<Exception, string> DefaultTryErrorHandler = exc => exc.Message;
223-
224-
public static Result Try(Action action, Func<Exception, string> errorHandler = null)
225-
{
226-
errorHandler = errorHandler ?? DefaultTryErrorHandler;
227-
228-
try
229-
{
230-
action();
231-
return Ok();
232-
}
233-
catch (Exception exc)
234-
{
235-
string message = errorHandler(exc);
236-
return Fail(message);
237-
}
238-
}
239-
240-
public static Result<T> Try<T>(Func<T> func, Func<Exception, string> errorHandler = null)
241-
{
242-
errorHandler = errorHandler ?? DefaultTryErrorHandler;
243-
244-
try
245-
{
246-
return Ok(func());
247-
}
248-
catch (Exception exc)
249-
{
250-
string message = errorHandler(exc);
251-
return Fail<T>(message);
252-
}
253-
}
254-
255-
public static async Task<Result<T>> Try<T>(Func<Task<T>> func, Func<Exception, string> errorHandler = null)
256-
{
257-
errorHandler = errorHandler ?? DefaultTryErrorHandler;
258-
259-
try
260-
{
261-
var result = await func().ConfigureAwait(Result.DefaultConfigureAwait);
262-
return Ok(result);
263-
}
264-
catch (Exception exc)
265-
{
266-
string message = errorHandler(exc);
267-
return Fail<T>(message);
268-
}
269-
}
270-
271-
public static Result<T, E> Try<T, E>(Func<T> func, Func<Exception, E> errorHandler)
272-
{
273-
try
274-
{
275-
return Ok<T, E>(func());
276-
}
277-
catch (Exception exc)
278-
{
279-
E error = errorHandler(exc);
280-
return Fail<T, E>(error);
281-
}
282-
}
283-
284-
public static async Task<Result<T, E>> Try<T, E>(Func<Task<T>> func, Func<Exception, E> errorHandler)
285-
{
286-
try
287-
{
288-
var result = await func().ConfigureAwait(DefaultConfigureAwait);
289-
return Ok<T, E>(result);
290-
}
291-
catch (Exception exc)
292-
{
293-
E error = errorHandler(exc);
294-
return Fail<T, E>(error);
295-
}
296-
}
297-
298222
public Result<T> MapFailure<T>()
299223
{
300224
if (IsSuccess)

CSharpFunctionalExtensionsNet4.0/CSharpFunctionalExtensionsNet4.0.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
<Compile Include="..\CSharpFunctionalExtensions\Result\Internal\ResultCommonLogic.cs" Link="Result\Internal\ResultCommonLogic.cs" />
6565
<Compile Include="..\CSharpFunctionalExtensions\Result\Internal\ResultMessages.cs" Link="Result\Internal\ResultMessages.cs" />
6666
<Compile Include="..\CSharpFunctionalExtensions\Result\Methods\Combine.cs" Link="Result\Methods\Combine.cs" />
67+
<Compile Include="..\CSharpFunctionalExtensions\Result\Methods\Try.cs" Link="Result\Methods\Try.cs" />
6768
<Compile Include="..\CSharpFunctionalExtensions\Result\IResult.cs" Link="Result\IResult.cs" />
6869
<Compile Include="..\CSharpFunctionalExtensions\Result\Result.cs" Link="Result\Result.cs" />
6970
<Compile Include="..\CSharpFunctionalExtensions\Result\ResultT.cs" Link="Result\ResultT.cs" />

0 commit comments

Comments
 (0)