值得一提的是, 处理过程中如果没有items, ItemReader 不应该抛出异常。...同样,如果 FooProcessor 传入的参数不是 Foo 也会抛出异常。...之所以直接抛出异常, 而不是先去映射第一个字段的原因是为了更早发现处理失败, 而不再调用 FieldSetMapper 来读取第2列。但是呢,有些情况下, 行的长度并不总是固定的。...如果格式不对,那这些基本的实现都是抛出异常。 如果数据丢失一部分,FixedLengthTokenizer 也会抛出异常。...同样, 使用 FieldSetMapper 时,如果读取超出 RowMapper 索引范围的值,又或者返回值类型不匹配,都会抛出异常。 所有的异常都会在 read 返回之前抛出。