今天遇到一个神烦的奇葩问题,真是见了鬼了。

本贴最后更新于 2619 天前,其中的信息可能已经事过景迁

一、问题描述

  • 移动端的一个导出功能,不同的浏览器竟然后台会报数组越界。

二、问题暴露过程

  • 我们有一个报表导出图片的功能,在昨天晚上的时候,老板秘书反映导出有问题,我们测试半天,发现电脑端没问题,我的 iPhone6 手机浏览器也没问题,由于用户一般都是直接在微信中使用该功能,然后直接导出的图片发送给领导看的,所以我们就又专门测了一下微信。
    这一测,问题就出来了,在 ios 版的微信中,导出在前端是没有任何问题的,各种正常……然后,看后台日志,竟然报了“数组越界”。而且定位的行是不存在越界这种问题的。
  • 于是,不甘心的又做了多种尝试,但依旧如此,甚至有部分手机导出不光后台会报错,前端也是不能正常使用的。

三、尝试修复

1.回忆最近更新的内容

  • 一看到这样的测试结果,有点懵。。于是开始回忆最近都是修改了什么内容。好在代码完全是我一个人修改的,改的内容时间间隔时间也不是很久,所以基本都比较清楚。
  • 由于最近正好改过数组类似的东西,所以觉得可能是数值计算有误,于是专门手动计算了好几遍,由于是比较复杂的报表绘制图片,里面的各项数值计算搞的头都大了。
  • 我根据之前的修改,一点点的重新写新的数值进去,然而——无济于事。

2.尝试

  • 一怒之下,我把代码还原到上个版本,然后——竟然也是报错的,估计是以前没有测出来的问题
  • 然后我把代码还原到最开始的版本,这下我彻底绝望了,竟然也是会报错的。

四、测试其他的浏览器

  • 搞了半天都没有什么收获,我就想,会不会只有微信才会有这种问题,于是我开始下载其他的浏览器。什么谷歌、UC 等等。
  • 最终测试的结论,微信和 UC 是会报错的,其他的不会。
  • 这服务端的东西,跟浏览器有什么关系呢?

五、先猜一种可能

  • 仔细想一下,前后端能扯上关系的就是前段请求,后端响应,那问题估计在请求的过程中。
  • 而请求返回的是一个输出流,那就可能是这个流的问题。接下来应该要从流着手去研究。

问题还没有解决,我记录完这些还要继续去奋斗。

后续……

  • 现在是 10 月 21 号早上,我进行了另外的尝试,就是文件不写入流,直接保存在服务器本地。结果,都是没有报错的。
  • 那么,最大的可能就是在写入流的时候出错了。
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • 数组越界
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...