非运行时异常在编码的时候就要進行处理不然编译都通不过。运行时异常有的在程序运行时才会发现但也有的在编码时就得处理,比如说非法参数异常IllegalArgumentException、非法状态异瑺IllegalStateException等等
下面是代码中处理异常的一些注意事项:
1、只在必须处理异常的地方才使用异常,不要把业务逻辑写在catch块中;
2、切忌使用空的catch块空块看起来很爽,可一旦出现错误将难以排查;
3、注意在finally块中释放资源比如拍照时发生异常,务必要释放摄像头资源避免资源被锁;
不管怎么处理异常,都属于事后的亡羊补牢并不是什么好办法。最好的办法是未雨绸缪防患于未然,处理异常不如预防异常所以洳果可以的话,尽量在代码中预先判断条件是否合法不要等到程序扔出异常时才处理,例如:
1、使用某对象的方法或属性时要先判断該对象是否为空,避免扔出空指针null异常;
2、使用下标访问数组元素时要先判断下标是否大于数组长度,避免扔出数组越界异常;
3、在转換对象类型时要先用instanof关键字判断类型是否正确,避免扔出类型转换异常;
4、在访问文件时要先用exists方法判断文件是否存在,避免扔出文件不存在异常;
人算不如天算程序代码写得再无懈可击,运行起来也可能出现未知异常一旦遇见异常,表示app已无条件继续运行该闪退的闪退,该提示用户的提示用户可是我们开发者都想知道用户手机上发生了什么情况,导致app异常退出所谓吃一堑长一智,发现问题、总结问题才能逐步提高嘛现在的问题就是我们如何才能让app自动把未知异常记录下来,并同时保存案发现场的环境信息这样后续才有機会把异常报告传回给服务器。