getView()不能抛出异常

时间:2011-01-11 02:05:43

标签: java android

我制作SingleItemAdapter扩展ArrayAdapter,此自定义适配器用于ListView

在这个SingleItemAdapter中,我做了一些数据库的东西,所以我想在getView()方法中抛出异常,这是一个初始化的GUI。

但是public View getView(int position,View convertView,ViewGroup parent)会抛出异常 将获得Exception Exception is not compatible with throws clause in ArrayAdapter.getView(int, View, ViewGroup)

ArrayAdapter,BaseAdapter,Adapter不会抛出异常,为什么?

3 个答案:

答案 0 :(得分:6)

Java中有两种不同类型的异常。检查异常要求在编译时通过方法声明或try / catch块处理异常。运行时异常没有此要求。

您无法向重写的方法声明添加新类型的Exception,因此您需要捕获异常并在内部处理它,或者使用运行时异常。

在您的情况下,您可能希望捕获数据库异常,并在代码中很好地处理它们。也许,如果数据库访问失败,您可以显示解释问题的错误消息。

如果你只是抛出一个运行时异常,那么用户可能会获得一个强制关闭屏幕,这对于UX透视图来说是一个非常糟糕的选择。

答案 1 :(得分:4)

如果重写方法没有抛出异常,则不能从覆盖的方法中抛出异常。你突破了压倒一切。而不是抛出异常,你必须处理它。

答案 2 :(得分:0)

ArrayAdapter的目的是使数组适应观看。它应该已经从数据库中获取。如果填充视图会引发异常,则没有意义。