我们的应用程序部分读取csv文件并将其转换为等效的Java对象的列表。进一步处理如下
List<MyDO> dataList = ...
try{
List<MyDO> processedList = dataList
.stream()
.filter(...)//some filter condition
.map(...)//some validation & processing
.collect(Collectors.toList());
}catch(Exception e){
logger.error("Invalid data found at "+i);
}
需要获取索引(i),在该索引中找到无效数据,例如不可解析的int值。我尝试像这样使用IntStream
IntStream.range(0, dataList.size())
.filter(i -> ...)
.mapToObj(i -> {
MyDO myDO = dataList.get(i);
...// some error at i
})
.collect(toList());
但是,不能将错误的i
分配给流外部的变量。可以取出并记录该索引吗?
答案 0 :(得分:0)
只需在专用异常中提供上下文信息即可。
library(shiny)
library(shinyjs)
ui<- fluidPage(
useShinyjs(),
tags$form(
class = "form-horizontal", action="/action_page.php",
div(id = "div_month_abb",
class = 'form-group',
tags$label(class = 'control-label col-sm-2', `for` = 'month_abb', 'Month (abbr.)'),
div(
class = 'col-sm-4',
selectInput('month_abb', '', month.abb)
)
),
div(id = "div_month_full",
class = 'form-group',
tags$label(class = 'control-label col-sm-2', `for` = 'month_full', 'Month (full)'),
div(
class = 'col-sm-4',
selectInput('month_full', '', month.name)
)
),
checkboxInput('abbr', 'Abbreviated')
)
)
server<-function(input, output) {
observe({
toggle(id = "div_month_abb", condition = input$abbr)
toggle(id = "div_month_full", condition = !input$abbr)
})
}
shinyApp(ui,server)
您还可以使用将索引作为var request = service.Files.Delete(fileId);
值的自定义异常类型,以使其更易于处理(以防万一,不仅需要记录日志,还可以执行其他操作)。该异常也可以采用相关的IntStream.range(0, dataList.size())
.filter(i -> ...)
.mapToObj(i -> {
MyDO myDO = dataList.get(i);
try {
...// some error at i
} catch(Exception ex) {
throw new IllegalStateException("at index "+i, ex);
}
})
.collect(toList());
。
通常,在此处使用普通循环可能会更简单:
int
或
MyDO
获得示例异常处理程序的效果。