我试图读取一个CSV文件,然后根据该CSV文件创建一个新的对象。我可以用SuperCSV库成功地做到这一点,但是如果发生错误(例如特定的单元格为null),它会抛出一个错误(如预期的那样)。我试图在ArrayList中收集所有错误,但现在第一个异常时一切都会停止。如何使SuperCSV CsvBeanReader继续到下一行,即使处理器出现错误?我在try/catch块中有循环条件。代码如下:
ArrayList<Duplicate> duplicates = new ArrayList<Duplicate>();
ArrayList<BadProperty> invalidProperties = new ArrayList<BadProperty>();
File convFile = new File(file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
final String[] header = beanReader.getHeader(true);
final CellProcessor[] processors = getProcessors();
Property property;
while ((property = beanReader.read(Property.class, header, processors)) != null) {
// logic in here
}
}
catch(SuperCsvException e) {
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}
最重要的是将try catch移到循环中,这样当发生异常时循环就不会停止。我会这样做
private void readProperties()
{
try
{
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
while (readNextProperty())
{
}
}
catch (Exception e)
{
}
finally
{
if(beanReader != null)
{
beanReader.close();
}
}
}
/** Returns true when there are more properties to read. */
private boolean readNextProperty()
{
try
{
Property property = beanReader.read(Property.class, header, processors);
if (property == null)
{
return false;
}
// logic in here
}
catch (SuperCsvException e)
{
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
return true;
}
我有一个由多个线程操作的ArrayList,由于ArrayList没有同步,所以无法工作。按照教授的指示,我把列表换成了向量。向量是同步的,但我抛出了与同步相关的异常。 为什么会发生这种情况,我如何避免代码中的并发异常?我不想只是玩玩,直到有东西起作用,我想做最好的事情。谢谢! 例外情况: 代码:
我有一个组合框,我正在通过收集视图源填充。这些项目是通过传入项目类型的数据板构建的(在本例中为ProjectViewModel)。这是在WPF中。NET 4.0。 在我的窗户里。资源,我指定了以下内容: 尽管有这种风格,我仍然收到以下错误: 系统。Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,ancestor type =”System的绑
我有一些(C 14)代码如下所示: 有时会抛出一个异常,这很好,因为如果是这样,我不希望垃圾映射中的值。 但是一开始我在循环中写了这个,这不起作用: 更准确地说,即使抛出异常,也会创建(并分配一个空集)。 这不是我所期望的:我希望它们以同样的方式运行。 这里有没有我误解的C原则?
在我的应用程序中,我有3个活动,主要活动,次要活动和第三次活动。我希望SecondaryActivity成为Android 6上特定域的默认应用程序链接处理程序,如本指南所述。同时,我希望另一个活动TertiaryActivity能够处理来自另一个域的链接,但不是默认处理程序,因为我不拥有该域。下面是我的AndroidManifest来说明: 我阅读了这本关于应用程序链接的广泛指南,它解释了And
用户应该能够将活动登录到activity_log模型中,但CreateView表单必须自动填写当前登录用户的user_id。 我已将OnetoOne关系上的djangoauth_user表扩展到另一个名为Profile(users-profile)的模型中。user_id是自动添加到我的Profile模型中的ForeignKey字段(我可以在MySQL WorkBench中看到它),并且是auth
问题内容: 在我用Swift编写的SpriteKit iOS游戏中,播放非常短的声音(约0.5秒)会产生打ic(如滞后)。在其他问题中,我读到我应该发出声音,就像以前那样。 我什至使用变量()在播放之前检查声音是否准备就绪。每当播放完()时,我也会重新准备声音。以下是代码的相关部分: 我不知道我在哪里犯了错误。我感觉我已经尝试了所有方法(包括但不限于:仅准备一次,在播放后立即准备,不使用变量,而只