private void Judge(JudgeContext context) { JudgeTask task = context.Task; ITaskSubmitter submitter = AdapterFactory.CreateTaskSubmitter(); try { UpdateTestData(context); using (BaseJudger judger = JudgerFactory.Create(context)) { LogStartJudgeTask(task.SubmitId); judger.Judge(); } } catch (ExpectedJudgeStopException) { } catch (Exception ex) // 判题失败 { context.Result = CreateFailedJudgeResult(context, ex.ToString()); throw; } finally { LogJudgeResult(context.Result); submitter.Submit(context); } }