Added exception handling extension method
This commit is contained in:
parent
3ef7bf1784
commit
33fe8f5dac
27
I18N Commander/Processor/ExtensionsError.cs
Normal file
27
I18N Commander/Processor/ExtensionsError.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System.Text;
|
||||
using DataModel;
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
namespace Processor;
|
||||
|
||||
public static class ExtensionsError
|
||||
{
|
||||
public static ProcessorResult<TResult> ToProcessorResult<TResult>(this Exception exception) where TResult : class
|
||||
{
|
||||
if(exception.InnerException is SqliteException sqliteException)
|
||||
if (sqliteException.SqliteErrorCode is 14)
|
||||
{
|
||||
var blockingProcesses = SystemUtil.WhoIsLocking(Setup.DataFile);
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine($"The data file is used by the {blockingProcesses.Count} other process(es) listed below:");
|
||||
foreach (var blockingProcess in blockingProcesses)
|
||||
sb.AppendLine($"- {blockingProcess.ProcessName} (id={blockingProcess.Id})");
|
||||
|
||||
return new ProcessorResult<TResult>(null, false, sb.ToString());
|
||||
}
|
||||
else
|
||||
return new ProcessorResult<TResult>(null, false, $"A database error occurred: '{sqliteException.Message}'");
|
||||
|
||||
return new ProcessorResult<TResult>(null, false, $"A database error occurred: '{exception.Message}'");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user