如何捕获动态指定的异常

时间:2015-12-29 08:54:34

标签: java scala

背景是我想要尝试多个例外。那些可以动态指定吗?

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或类型信息。

1 个答案:

答案 0 :(得分:2)

dynamic expando = new ExpandoObject(); expando.DoStuff = new Func<string>(() => "hello world"); // Now you can swap DoStuff with other method setting another delegate: expando.DoStuff = new Func<string, string>(text => text + "!"); e.type,因此Class无法满足您的需求。你需要e1.isInstanceOf[e.type]而不是那里。