gpt4 book ai didi

scala - 包装所有抛出的异常

转载 作者:行者123 更新时间:2023-12-02 08:07:49 25 4
gpt4 key购买 nike

我正在设计一个特征。

trait Storage{
def write(data: Array[Byte]): Unit
}

class StorageWriteException(t: Throwable) extends RuntimeException(t)

如何将 trait Storage 的任何实现抛出的所有 NonFatal 异常都包装到 StorageWriteException 中?

是否可以在所有实现中不手动包装它?

最佳答案

你可以将你的特质定义为

trait Storage {
final def write(data: Array[Byte]): Unit =
try writeImpl(data) catch {
case NonFatal(e) => throw new StorageWriteException(e)
}

protected def writeImpl(data: Array[Byte]): Unit
}

然后在实现中覆盖 writeImpl 而不是 write。这是 Template Method 的案例设计模式

关于scala - 包装所有抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800682/

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