cannot handle exception type PackageManager.NameNotFoundException thrown by implicit super construct

来源:互联网 发布:软件项目付款申请 编辑:程序博客网 时间:2024/06/05 10:38


别人拿来给我改的代码,在类属性里放了这么一段:

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自动加上异常处理。

习惯了在执行报错后加上全局的异常捕获。

所以形成了思维定势。


为什么形成思维定势?因为编程这门学问太博大精深了,编程的时候脑子一点都不敢跳。

所以说,编程这玩意真不适合我。。。


0 0
原创粉丝点击