这可能是一个Java问题,或者它可能是一个Eclipse问题,我不是正面的。
我正在Android中创建自定义视图:HelpTextView extends View
我想覆盖View.setVisibility()
,强制将HelpTextView.setVisibility()
的调用写入try-catch (NullPointerException nex)
块内。
我在方法中添加了一个throws声明(这是我认为会做的伎俩)以及throw命令但没有运气。这不起作用,因为它根本不会起作用(也许是压倒性的,就是这样做不起作用)或者我做错了什么?
答案 0 :(得分:3)
NullPointerException
是RuntimeException
的子类。 RuntimeException
是unchecked exception,意味着您无需捕捉它。
无论您如何声明方法,都不能强制捕获NullPointerException。
但是,您可以创建自己的Exception
并强制抓住它。
答案 1 :(得分:3)
您不能覆盖方法并添加一个尚未在超级方法中声明的异常,除了RuntimeExceptions。
答案 2 :(得分:2)
你不能这样做,因为NullPointerException是一个RuntimeException,不需要被调用者捕获。
您最好的方法是实施自己的例外。
public class HelpTextView extends View {
public setThisVisibility(boolean isVisible) throws MyNullPointerException {
...
}
}
并且您的MyNullPointerException
不能是RuntimeException