捕获Scala宏扩展错误

时间:2016-07-10 21:01:13

标签: scala macros

是否有一种简单的方法可以捕获宏扩展期间抛出的错误?

假设我有以下代码。当我调用它时,我希望能够捕获并检查RuntimeException引发的fooMacro

def foo: Unit = macro fooMacro

def fooMacro(c: scala.reflect.macros.whitebox.Context) = {
    throw new RuntimeException("bar") 
}

1 个答案:

答案 0 :(得分:0)

你可能希望你能提供一个会收到异常的Reporter,但实际上它已经在蛋糕中加了字符串:

https://github.com/scala/scala/blob/v2.12.0-M5/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala#L840

还有-Ymacro-debug-verbose。