首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在scala中动态地将错误消息传递给自定义异常

如何在scala中动态地将错误消息传递给自定义异常
EN

Stack Overflow用户
提问于 2018-12-07 04:48:00
回答 1查看 1K关注 0票数 0

目前,我编写了多个自定义异常用例类,用于抛出异常消息。在自定义异常中,除了名称之外,所有内容都是相同的。有没有办法动态地将异常消息传递给一个类。这样我就可以避免编写多个case类。有没有更好的方法来实现这个场景?任何建议。

示例:

代码语言:javascript
复制
// case class
// Custom Exception-1
final case class MissingRule(private val message: String = "",
                             private val cause: Throwable = None.orNull)
extends Exception(message, cause)
// Custom Exception-2
final case class MissingPrimaryKey(private val message: String = "",
                             private val cause: Throwable = None.orNull)
extends Exception(message, cause)

代码语言:javascript
复制
Object sampleObj {
 def process(){
 try {
    if (some condition){
        throw MissingRule ("Rule Missing")
    }
    if (some conition){
        throw MissingPrimaryKey ("Key is Missing")
    }
  } catch {
  // Here I am throwing the exception again 
 // so that the spark job will fail with proper error message
    case _: MissingRule =>
      throw MissingRule("Rule Missing")
    case _: MissingPrimaryKey =>
      throw MissingPrimaryKey("Key is Missing")
    case e: Exception =>          
      println("Exception: " + e.printStackTrace().toString)
  } finally {
  // some operation
  }
 }
}
EN

回答 1

Stack Overflow用户

发布于 2018-12-07 05:51:02

我不确定您在这里试图实现的是什么。

如果你不想创建多个类,只创建一个类,并且总是用不同的消息抛出它:

代码语言:javascript
复制
case class MyCoolException(message: String) extends Exception(message)

或者,反过来,如果您想要不同的类,但又不想为它们指定消息(有点道理),那么只需使用这些消息作为默认值,而不是""

代码语言:javascript
复制
 case class MissingRule(message: String = "Rule is missing") extends Exception(message)     
 case class MissingKey(message: String = "Key is missing") extends Exception(message)

等等..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53659443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档