我有 UserDoesNotHaveApiKey 异常,其代码如下:
public class UserDoesNotHaveApiKeyException extends Exception {}
现在在启动屏幕上,我会进行一些检查,以确定用户是否具有API密钥,并且我想将UserDoesNotHaveApiException扔到onError内并打开登录屏幕。
正如您可以在onError中使用的那样,我有if语句,并且它总是转到else语句,即使很明显我有正确的异常。
为什么?
答案 0 :(得分:1)
长话短说,RuntimeException与其他异常不同。
您可以引发Exception,它的适当现有子类(RuntimeException
及其未经检查的子类除外)或Exception
的自定义子类。
在Java中,有两种类型的异常-已检查和未检查的异常。这是摘要:
- 已检查-扩展
java.lang.Exception
,以恢复状态, 尝试尝试捕获异常,编译错误。- 未选中-扩展
java.lang.RuntimeException
(不可恢复) 条件,例如编程错误,不需要try-catch,运行时错误。