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。