我知道我总是可以在try/catch
块中捕获异常并像这样抛出Exception (message, e)
try {
//...my code throwing some exception
} catch (IndexOutOfBoundsException e) {
throw new Exception("Error details: bla bla", e);
}
容易。但这在重写的方法中不起作用,因为它们不能抛出任何异常,而超级方法则不会抛出任何异常。
那么,我现在有什么选择?
答案 0 :(得分:2)
您始终可以选择 unchecked 例外,即dcast()
类的子类。这些异常以及result <- data.table(id = DT[["id"]], stack(DT[, ..pcols]), stack(DT[, ..rcols])) %>%
setnames(c("id", "type", "pind", "rval", "rind")) %>%
.[, .(type = type[as.logical(rval)], id)] %>%
dcast(id ~ type, value.var = "id", fill = "no", fun.aggregate = function(x) if (length(x)) "yes") %>%
.[, `NA` := NULL]
> head(result)
id type1 type2
1: 1 yes yes
2: 2 yes no
3: 3 no yes
4: 4 no no
5: 5 no yes
6: 6 yes no
的子类免于编译时检查。
这里RuntimeException
定义了没有Error
子句的Parent
方法,而throwException()
类将其覆盖,但从{{ 1}}块。
throws