gpt4 book ai didi

java - 奇怪的 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-11-29 05:57:34 26 4
gpt4 key购买 nike

我遇到了一个很奇怪的异常。它在这里运行良好,但我的客户不断遇到此异常然后崩溃,我花了很多时间才弄清楚,但不幸的是到目前为止仍然没有运气,任何帮助将不胜感激!

这是代码:

protected void onPostExecute(List<File> result) {
try {
mBooks.clear();
if (result != null) {
ArrayList<BookInfo> newBooks = new ArrayList<BookInfo>();
for (File f : result) {
BookInfo bi = new BookInfo(BookCollections.this, f);
if (!contains(bi)) {
newBooks.add(bi);
}
}
mDB.insertBooks(newBooks);
mBooks.addAll(newBooks);
new AlertDialog.Builder(BookCollections.this)
.setTitle(newBooks.size() + " Books found!")
.setPositiveButton(android.R.string.ok, null)
.setView(
new BookInfoList(BookCollections.this,
newBooks)).show();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
mScanDlg.dismiss();
notifyDataSetChanged();
}
}

private boolean contains(BookInfo bi) {
if (bi == null) {
return true;
}
for (BookInfo book : mBooks) {
if (book.equalTo(bi)) {
return true;
}
}
for (FolderInfo fi : mFolders) {
if (fi.getBooks() != null) {
for (BookInfo book : fi.getBooks()) {
if (book.equalTo(bi)) {
return true;
}
}
}
}
return false;
}

请帮帮我。谢谢

这个异常(java.lang.ArrayIndexOutOfBoundsException)在

之间引发
for (File f : result) {
BookInfo bi = new BookInfo(BookCollections.this, f);
if (!contains(bi)) {
newBooks.add(bi);
}
}

最佳答案

我注意到您的方法名称是 onPostExecute。这可能是处理网络请求的方法吗?如果是这样,那么当您的客户运行此代码时,它可能正在多线程 Web 容器中运行。然而,你的 Collection ,ArrayList , 不是线程安全的集合。这可能就是为什么它可以在您的开发(单线程)环境中工作,但不能在繁忙的服务器上工作。

考虑使用 Collections.synchronizedList()实例化 ArrayList 的方法。请务必遵循 API 文档中有关在同步块(synchronized block)内进行迭代的建议。

关于java - 奇怪的 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11481207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com