gpt4 book ai didi

Scala:如何捕获父类的构造函数抛出的异常?

转载 作者:行者123 更新时间:2023-12-02 03:17:23 27 4
gpt4 key购买 nike

假设我有以下内容:

class Parent {
// does some things that may result in an exception
throw new IllegalArgumentException
}

class Child extends Parent

我希望 Child 的构造函数能够捕获、包装并重新抛出 Parent 的构造函数抛出的异常。我该怎么做?

最佳答案

不幸的是,似乎无法完全按照您的意愿行事。 ChildParent 构造函数的调用仅由 Child 声明的 extends 部分控制,次要Child 构造函数只能通过主 Child 构造函数调用 Parent 构造函数(参见 this Scala Cookbook entry )

不过,作为替代方案,您可以将 Child 构造函数设为私有(private),而是通过包装任何抛出的异常的工厂方法实例化 Child:

class Child private extends Parent

object Child {
def apply() = {
try {
new Child
} catch {
case e: IllegalArgumentException => throw new WrappedException(e)
}
}
}

val foo = Child() // throws WrappedException

请注意,这还将捕获、包装并重新抛出任何由 Child 本身的构造函数抛出的 IllegalArgumentException

关于Scala:如何捕获父类的构造函数抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com