using SKMC.Api.Client.Config; using SKMC.Api.Client.UI; using SKMC.Api.Common.Logger; using SKMC.Api.Machine.Control; using System; namespace SKMC.Api.Common.Exceptions { /// /// 异常包装类 /// public class ExceptionWrapper { private static readonly ILogger log = LogFactory.Get(); private static readonly IMachineBoardControl machineBoardControl = ObjectFactory.Resolve(); private static readonly CommonCacher commonCacher = ObjectFactory.Resolve(); public static string Throws(Exception exception, string dialogViewName = ClientConstants.Views_CommonException) { if (exception == null) return null; if (typeof(ExceptionBase).IsAssignableFrom(exception.GetType())) { ExceptionBase exceptionBase = exception as ExceptionBase; ExceptionConfig exceptionConfig = commonCacher.GetExceptionConfig(exceptionBase); exceptionBase.Level = exceptionConfig.Level; // 停机异常 if (exceptionConfig.Level == 4) { machineBoardControl.IsAlarm = true; machineBoardControl.StopAction.Invoke(); log.Error($"严重异常: {exception}"); return ClientDialogs.CreateExceptionDialog(exceptionBase, dialogViewName); } // 普通异常 if (exceptionConfig.Level == 2) { machineBoardControl.IsAlarm = true; machineBoardControl.PauseAction.Invoke(); log.Error($"普通异常: {exception},{exception.StackTrace}"); return ClientDialogs.CreateExceptionDialog(exceptionBase, dialogViewName); } // 单站异常 if (exceptionConfig.Level == 1) { if (exceptionBase.StationId > 0) { machineBoardControl.PauseOneAction.Invoke(exceptionBase.StationId); } log.Error($"单站异常: {exception}"); return ClientDialogs.CreateExceptionDialog(exceptionBase, dialogViewName); } else { log.Error($"其他异常: {exception}"); return null; } } // 未知异常 else { machineBoardControl.IsAlarm = true; machineBoardControl.StopAction.Invoke(); log.Error($"未知异常: {exception.Message}", exception); ClientDialogs.CreateExceptionDialog(exception); return null; } } } }