Если я передаю анонимную функцию в качестве аргумента, например, например. в этом примере кода:Scala: обработка исключений в анонимной функции
val someMap = someData.map(line => (line.split("\\|")(0), // key
line.split("\\|")(1) + "|" + // value as string concat
line.split("\\|")(4) + "|" +
line.split("\\|")(9)))
Я мог бы поймать, например. ArrayIndexOutOfBoundsException так:
try {
val someMap = someData.map(line => (line.split("\\|")(0), // key
line.split("\\|")(1) + "|" + // value as string concat
line.split("\\|")(4) + "|" +
line.split("\\|")(9)))
} catch {
case e1: ArrayIndexOutOfBoundsException => println("exception in line ")
}
Проблема в том, что у меня нет доступа к сферам внутренней функции. В этом случае я хотел бы напечатать line
(от анонимной функции), которая вызвала исключение.
Как это сделать? Есть ли способ поймать исключение в анонимной функции? Есть ли способ получить доступ к области анонимной функции извне для целей отладки?
редактировать: Я использую Scala 2.9.3
Он цеплялись 'ArrayIndexOutOfBoundsException' приходит индексировать строки, как в' line.split (...) (3) ', а не' map'. –
@ PetrPudlák, вот почему ему нужно обернуть внутреннюю анонимную функцию, попробуйте/поймайте карту, не требуемую – 4lex1v