csharp
// Comprehensive Error Handling
public class ErrorHandling
{
public void SafeOperation()
{
try
{
// Risky operation
double result = Calculate();
@Tag.Result.Value = result;
}
catch (DivideByZeroException ex)
{
// Specific exception handling
@Tag.Error.Type = "Division Error";
@Tag.Error.Message = "Cannot divide by zero";
LogError(ex);
}
catch (Exception ex)
{
// General exception handling
@Tag.Error.Type = "General Error";
@Tag.Error.Message = ex.Message;
LogError(ex);
}
finally
{
// Always execute
@Tag.Process.Calculating = false;
}
}
private void LogError(Exception ex)
{
var errorLog = new
{
Timestamp = DateTime.Now,
Type = ex.GetType().Name,
Message = ex.Message,
StackTrace = ex.StackTrace,
User = @Tag.System.CurrentUser
};
@Dataset.Execute(
"INSERT INTO ErrorLog (Time, Type, Message, Stack, User) VALUES (@Time, @Type, @Msg, @Stack, @User)",
errorLog
);
}
}