服务器处理发生异常:Index: 0, Size: 0

原因:

 查询数据后你用的是List接收出参,然而你的List里边没有值,你却取了里边的值就报这个错。

具体原因分析:

 这个异常通常是在程序中使用了一个空集合或数组,并尝试通过索引访问其中的元素,导致程序崩溃。

具体来说,Index: 0, Size: 0 表示程序中的一个集合或数组的大小为0,而在尝试访问索引为0的元素时发生了异常。这通常发生在以下情况:

当程序尝试从一个空的集合或数组中访问元素时,就会发生此异常。例如,如果一个数组没有初始化或者它的大小为0,程序就会尝试访问数组的第一个元素(即索引为0的元素),这时就会出现Index: 0, Size: 0异常。

另一个可能发生此异常的情况是当程序中使用了错误的索引值。例如,如果程序中有一个集合或数组,其大小为0或者小于所访问的索引值,就会出现此异常。

要解决这个异常,可以在访问集合或数组之前先检查其是否为空,或者检查所要访问的索引值是否小于集合或数组的大小。这样可以避免访问一个空集合或数组,或者超出其索引范围而导致程序崩溃。

代码演示

List<TmOutputDTO> tmOutputDTO =tmMapper.excludeDuplicates(hos.getid());
if (tmOutputDTO!=null) {
    throw new 
ApplicationException("已存在"+tmOutputDTO.get(0).getTeamid()+ "不允许重复添加");
     }

这个代码中是判断不了tmOutputDTO是否为空的,因为他是一个实例化的类,它里边及时参数为为空,它存在属性,所以不为被判断为空。需要改成下边这段代码:

List<TmOutputDTO> tmOutputDTO =tmMapper.excludeDuplicates(hos.getid());
if (tmOutputDTO.size()>0) {
    throw new 
ApplicationException("已存在"+tmOutputDTO.get(0).getTeamid()+ "不允许重复添加");
     }

这样取值就无误了

让你的能力撑起你的野心

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,可以的。我可以为您解答这个问题。 首先,我们需要一个 HTML 表单元素和一个 JavaScript 函数来实现图片上传。以下是一个简单的示例: ```html <form id="upload-form"> <input type="file" id="file-input" name="image" accept="image/*" multiple> <button type="submit">上传图片</button> </form> ``` ```javascript const form = document.querySelector('#upload-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const formData = new FormData(event.target); const response = await fetch('/upload', { method: 'POST', body: formData, }); if (response.ok) { alert('上传成功!'); } else { alert('上传失败!'); } }); ``` 上述代码的作用是,当用户选择一张或多张图片并点击“上传图片”按钮时,会将所选图片文件打包成一个 FormData 对象,并通过 fetch API 发送到服务器上的 '/upload' 路径。如果上传成功,会弹出一个提示框;如果上传失败,也会弹出一个提示框。 接下来,我们需要实现图片拖拽排序功能。这个功能需要用到 HTML5 的拖放 API。以下是一个示例: ```html <ul id="sortable-list"> <li><img src="image1.jpg"></li> <li><img src="image2.jpg"></li> <li><img src="image3.jpg"></li> </ul> ``` ```javascript const sortableList = document.querySelector('#sortable-list'); sortableList.addEventListener('dragstart', (event) => { event.dataTransfer.setData('text/plain', event.target.dataset.index); }); sortableList.addEventListener('dragover', (event) => { event.preventDefault(); const target = event.target.closest('li'); if (target) { target.classList.add('dragover'); } }); sortableList.addEventListener('dragleave', (event) => { const target = event.target.closest('li'); if (target) { target.classList.remove('dragover'); } }); sortableList.addEventListener('drop', (event) => { event.preventDefault(); const sourceIndex = event.dataTransfer.getData('text/plain'); const source = sortableList.querySelector(`li[data-index="${sourceIndex}"]`); const target = event.target.closest('li'); if (target && target !== source) { const targetIndex = target.dataset.index; if (sourceIndex < targetIndex) { target.insertAdjacentElement('afterend', source); } else { target.insertAdjacentElement('beforebegin', source); } } }); ``` 上述代码的作用是,当用户将列表中的某一项拖拽到其他位置时,会触发相应的事件。拖拽开始时,会将被拖拽项的索引存入 dataTransfer 对象中;拖拽过程中,会高亮鼠标经过的目标项;拖拽结束时,会将被拖拽项插入到目标项的前面或后面。 最后,我们需要处理网络传输异常情况和限制文件大小。这些问题可以在服务器端进行处理。以下是一个示例: ```javascript const multer = require('multer'); const upload = multer({ limits: { fileSize: 1024 * 1024 }, // 限制文件大小为 1MB fileFilter: (req, file, cb) => { if (!file.mimetype.startsWith('image/')) { // 只接受图片文件 return cb(new Error('文件类型错误!')); } cb(null, true); }, }).single('image'); app.post('/upload', (req, res) => { upload(req, res, (error) => { if (error) { console.error(error); res.status(400).send(error.message); } else { console.log(req.file); res.send('上传成功!'); } }); }); ``` 上述代码的作用是,使用 multer 中间件处理文件上传请求,并限制文件大小为 1MB,只接受图片文件。如果上传失败,会返回 400 错误码和错误信息;如果上传成功,会在控制台输出文件信息,并返回上传成功的提示信息。 对于已上传的文件进行归类,可以在上传成功后进行处理。以下是一个示例: ```javascript const fs = require('fs'); const path = require('path'); app.post('/upload', (req, res) => { upload(req, res, async (error) => { if (error) { console.error(error); res.status(400).send(error.message); } else { console.log(req.file); const { filename } = req.file; const extname = path.extname(filename); const dirname = path.join(__dirname, 'uploads', extname.slice(1)); if (!fs.existsSync(dirname)) { fs.mkdirSync(dirname, { recursive: true }); } const destname = path.join(dirname, filename); fs.renameSync(req.file.path, destname); res.send('上传成功!'); } }); }); ``` 上述代码的作用是,在上传成功后,将文件移动到以文件类型为名的子目录中,并重命名为原始文件名。例如,如果上传的是一张名为 'image.jpg' 的图片,会将它移动到 'uploads/jpg/image.jpg' 目录中。如果目录不存在,则会自动创建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Recently 祝祝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值