2015-12-29 3 views
0

Фон у меня есть несколько исключений Я хочу попробовать. могут ли они быть динамически заданы?Как поймать динамически определенное исключение

def retryOn(e:Class[_])(n: Int)(block:() => Unit):Unit = { 
    try { 
     block() 
    } catch { 
     case e1: Throwable => 
      if (n > 1 && e1.isInstanceOf[e.type]) { 
       retryOn(e)(n - 1)(block) 
      } 
      else throw e1 
    } 
} 

от того, что пытались выше, это не работает, потому что выброшен e1 не имеет никакого debug или введите информацию на всех.

+0

y не использовать Try блок вместо try {} catch {}, он содержит все, что вам нужно – Aamir

+0

вы можете регистрировать или отлаживать e1, прежде чем реконструировать его;) –

ответ

2

e.typeClass, поэтому e1.isInstanceOf[e.type] не делает, что вы хотите. Вам нужно e.isInstance(e1), а не там.

Смежные вопросы