public void TestInnerException(string caller_trace, int innerLevel, string excName, string excMessage) { ExceptionInfoRequest exceptionInfoRequest = new ExceptionInfoRequest(); exceptionInfoRequest.arguments.threadId = threadId; var ret = VSCodeDebugger.Request(exceptionInfoRequest); Assert.True(ret.Success, @"__FILE__:__LINE__" + "\n" + caller_trace); ExceptionInfoResponse exceptionInfoResponse = JsonConvert.DeserializeObject <ExceptionInfoResponse>(ret.ResponseStr); ExceptionDetails exceptionDetails = exceptionInfoResponse.body.details.innerException[0]; for (int i = 0; i < innerLevel; ++i) { exceptionDetails = exceptionDetails.innerException[0]; } if (exceptionDetails.fullTypeName == excName && exceptionDetails.message == excMessage) { return; } throw new ResultNotSuccessException(@"__FILE__:__LINE__" + "\n" + caller_trace); }
public void TestExceptionInfo(string caller_trace, string excCategory, string excMode, string excName) { ExceptionInfoRequest exceptionInfoRequest = new ExceptionInfoRequest(); exceptionInfoRequest.arguments.threadId = threadId; var ret = VSCodeDebugger.Request(exceptionInfoRequest); Assert.True(ret.Success, @"__FILE__:__LINE__" + "\n" + caller_trace); ExceptionInfoResponse exceptionInfoResponse = JsonConvert.DeserializeObject <ExceptionInfoResponse>(ret.ResponseStr); if (exceptionInfoResponse.body.breakMode == excMode && exceptionInfoResponse.body.exceptionId == excCategory + "/" + excName && exceptionInfoResponse.body.details.fullTypeName == excName) { return; } throw new ResultNotSuccessException(@"__FILE__:__LINE__" + "\n" + caller_trace); }