处理Scala对象构造函数中的异常

时间:2013-01-01 21:43:32

标签: scala lift

我正在尝试使用Lift JPA,当我引用Model时,它调用超级构造函数我得到了一个例外:

object Model extends LocalEMF("LiftPersistenceUnit") with RequestVarEM

问题是异常隐藏在此异常后面:

java.lang.NoClassDefFoundError: Could not initialize class...

所以,我的问题是:在这种情况下,记录/处理异常的最佳方法是什么?

或者,任何人都可以推荐使用Lift JPA的其他模式吗? Model是代码的方式是推荐的方式,但它不是非常用户友好的IMO。我们的想法是拥有一个可以通过请求变量.sc

访问的单例实体管理器工厂

1 个答案:

答案 0 :(得分:3)

我可以想到在LocalEMF的构造函数之前执行某些操作的唯一方法:

class Model(val init: Unit = println("Hai")) 
  extends LocalEMF("LiftPersistenceUnit") with RequestVarEM

也许您可以代理对LocalEMF("LiftPersistenceUnit")的调用,并使用一些非凡的技巧添加适当的异常日志记录。

修改

我找到了它:

class LocalEMF(haha: String) { val e = throw new RuntimeException }
trait RequestVarEM

class Model(val init: Unit = println("Hai")) extends { val e = 
  try new LocalEMF("LiftPersistenceUnit") catch {
    case t: Throwable => println("Catched: " + t); throw t
  } 
} with RequestVarEM