概述
别人拿来给我改的代码,在类属性里放了这么一段:
final PackageManager pm = getPackageManager();
final PackageInfo pi = pm.getPackageInfo(getPackageName(), 0);
ApplicationInfo ai = pi.applicationInfo;
int uid = ai.uid;
long a = TrafficStats.getUidRxBytes(uid);
long b = TrafficStats.getUidTxBytes(uid);
final PackageInfo pi = pm.getPackageInfo(getPackageName(), 0);报了这么个错误:
Default constructor cannot handle exception type PackageManager.NameNotFoundException thrown by implicit super constructor. Must define an explicit constructor
翻看API,看到PackageManager 是个虚类,getPackageInfo是个虚方法。原本以为错就在这里了。
不过也许在别处实现了这个方法呢?虽然API中没说明何处实现了它,这个有点坑,但是,应该不至于这么坑吧。。。
然后看错误内容,是说父类构造器是显式的,所以子类也不能用默认构造器,所以就出现了 NameNotFoundException。
尼玛,这是要我去给加个构造器的节奏吗?这不是坑爹嘛~
但是,为毛线有异常没有 出现 try-catch?
因为这段代码是放在域中的。
移到函数里去加上异常处理就ok了。
但是既然说出现了未处理的异常,为什么没有第一时间想到去捕获处理它?
因为习惯了用eclipse自动加上异常处理。
习惯了在执行报错后加上全局的异常捕获。
所以形成了思维定势。
为什么形成思维定势?因为编程这门学问太博大精深了,编程的时候脑子一点都不敢跳。
所以说,编程这玩意真不适合我。。。
最后
以上就是默默西装为你收集整理的cannot handle exception type PackageManager.NameNotFoundException thrown by implicit super construct的全部内容,希望文章能够帮你解决cannot handle exception type PackageManager.NameNotFoundException thrown by implicit super construct所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复