Android 哪一个是最好的例外?或者:如何处理配置错误的活动?

Android 哪一个是最好的例外?或者:如何处理配置错误的活动?,android,error-handling,android-activity,maintainability,Android,Error Handling,Android Activity,Maintainability,这是一个有点学术性的问题,但我很想听听你的意见 我有一个活动,它由一个类型字符串松散地参数化。创建活动时,我将始终通过Intent的putExtra()传入正确的类型。但我只希望该字符串有一个值,出于各种原因,我不想硬编码它(尽管我正在权衡这个想法) 无论如何,就像一个优秀的可维护Java代码编写者一样,我会抛出一个异常,以捕获错误类型值的高级错误。我计划使用IllegalArgumentException。语义上有更好的选择吗 也许更好的问题是:如何最好地处理一个Android活动,它在启动后

这是一个有点学术性的问题,但我很想听听你的意见

我有一个
活动
,它由一个类型字符串松散地参数化。创建活动时,我将始终通过
Intent
putExtra()
传入正确的类型。但我只希望该字符串有一个值,出于各种原因,我不想硬编码它(尽管我正在权衡这个想法)

无论如何,就像一个优秀的可维护Java代码编写者一样,我会抛出一个异常,以捕获错误类型值的高级错误。我计划使用
IllegalArgumentException
。语义上有更好的选择吗

也许更好的问题是:如何最好地处理一个Android
活动
,它在启动后显然配置错误

public class MyActivity {

   private String type;

   @Override
   protected void onCreate(Bundle sharedInstanceState) {
      super.onCreate(sharedInstanceState);

      Intent intent = getIntent();
      this.type = intent.getStringExtra("type");

      if (this.type == null || !this.type.equals("the proper type")) {
         // is there something semantically better?
         throw new IllegalArgumentException("You're doing it wrong.");

         // perhaps it's better just to toast.show(), Log.e(), and finish()?
      }

      // ... etc
   }
}

我想说的是,如果您将它作为一个库发布,并且希望您的代码看起来非常整洁,那么声明您自己的异常(subclass
RuntimeException
)并抛出它。当您处理编程错误时,绝对不需要担心祝酒等问题,这不是用户可以修复的。

我想说,如果您将此作为库发布,并且希望代码看起来非常整洁,请声明您自己的异常(子类
RuntimeException
)并抛出它。当然,在处理程序错误时,不必操心敬酒等,而不是用户可以修复的东西。

稍不相关,但您可以考虑使用EnUM来定义您的活动的有效参数。(我相信枚举是隐式可序列化的,因此您可以将它们打包成意图额外部分)稍微无关,但是您可以考虑使用EnUM来定义哪些活动是有效的“参数”。(我相信枚举是隐式序列化的,所以您可以将它们打包到Intent extra中)在它们关闭我的问题之前接受。我确实从IllegalArgumentException更改为RuntimeException。在他们关闭我的问题之前接受。我确实从IllegalArgumentException更改为RuntimeException。