// 异常信息格式化 List<String> stackTraceList = LogUtil.formatStackTraceElement(stackTrace, exceptionType, exceptionCauseMsg); // 获取线程变量 List<String> threadLocalLogs = LogUtil.getThreadLocalLogs(); threadLocalLogs.addAll(stackTraceList); testResultBean.setLog(threadLocalLogs);中 threadLocalLogs.addAll(stackTraceList);报异常UnsupportedOperationException ,为什么
时间: 2024-04-19 18:24:41 浏览: 130
C#日志类库,日志工具类,无需配置,不依赖第三方库 集成了NLog和log4net,以便于对比测试
根据你提供的代码片段,当执行 `threadLocalLogs.addAll(stackTraceList)` 时抛出 `UnsupportedOperationException` 异常的原因可能是 `threadLocalLogs` 对象是一个不可修改的列表。
`addAll` 方法用于将另一个集合中的元素添加到目标集合中。然而,如果目标集合是只读的或不可修改的,则无法执行添加操作,会抛出 `UnsupportedOperationException` 异常。
要解决这个问题,你可以考虑使用一个可变的列表来存储日志信息,而不是使用不可修改的列表。你可以尝试使用 `ArrayList` 或 `LinkedList` 等可变列表的实现类,确保 `threadLocalLogs` 对象是可修改的。
另外,如果 `LogUtil.getThreadLocalLogs()` 方法返回的是一个不可修改的列表,你可以考虑将其转换为可变列表。例如,可以使用 `new ArrayList<>(LogUtil.getThreadLocalLogs())` 创建一个新的可变列表,并将其赋值给 `threadLocalLogs` 变量。
请注意,具体的解决方案取决于 `LogUtil` 类的实现和 `threadLocalLogs` 对象的类型。确保使用支持修改操作的可变列表来解决此问题。
阅读全文