/// <summary> /// Gestisce gli errori che si possono verificare durante l'elaborazione del task. /// </summary> /// <param name="taskProcId">identificativo di elaborazione del task che ha provocato l'errore</param> /// <param name="exception">l'eccezione contenente gli eventuali dettagli dell'errore</param> /// <param name="error">l'errore da restituire all'utente</param> private void HandleTaskPerformerError(string taskProcId, TaskPerformerException exception, out TaskErrorInfo error) { string errorId; string errorDetails = exception.ToString(); HandleError(taskProcId, errorDetails, out errorId); var inner = exception.InnerException; TaskErrorCode code; string details; if (inner is TaskDataReadException) { code = TaskErrorCode.ComponentReadDataFailed; details = errorDetails; } else if (inner is TaskProcessingException) { code = TaskErrorCode.ComponentProcessingFailed; details = errorDetails; } else if (inner is TaskResultWriteException) { code = TaskErrorCode.ComponentWriteResultFailed; details = errorDetails; } else { code = TaskErrorCode.ComponentUnknownError; details = string.Empty; // exception shielding } // Errore da restituire all'utente. error = new TaskErrorInfo() { Id = errorId, Details = details, Code = code }; }