try-catch使用反思(-)

在实现okhttp监控功能的时候, 我是用的addInterceptor方式, 代码大概是这样的:

public class MyIntercept implements Interceptor{

public Response intercept(Interceptor.Chain chain) throw IOException{

Response ret = null;

try{

//代码

ret = chain.proceed(chain.request);

//代码

}catch (Exception e){

}

return ret;

}

}

这么写本意是不能抛出任何异常, 防止用户代码崩溃, 可是后来用户没有网络的时候还是出现了空指针异常。

经过排查和思考,发现我这里try-catch处理了用户的代码, chain.proceed()这个是可能产生异常的,但是窝处理了,所以ret = null 返回给调用者了, 发现问题后我将ret = chain.proceed()放到try-catch外面来,问题成功解决。

总之,try-catch只处理自己的代码, 用户或者系统的代码不要管, 如果抛异常,让用户或者系统处理。

时间: 2024-10-13 07:18:50

try-catch使用反思(-)的相关文章

转载--C++的反思

转载自http://blog.csdn.net/yapian8/article/details/46983319 最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?呵呵呵. 咱们要有点娱乐精神,关于 C++的笑话数都数不清: 笑话:C++是一门不吉祥的语言,据说波音公司之前用ADA为飞机硬件编程,一直用的好好的,后来招聘了一伙大学生,学生们说我靠还在用这么落后的语言,然后换成C++重构后飞机就

JavaWeb网上商城课程设计的反思

不知道从什么时候起,我爱上了写博客,对之前学得的只是进行反思.写了几天课程设计,代码量量8.9千左右. 然后下面文字是我在博客上复制过来的,说得很详细 MVC(Model View Controller)设计模式在JavaFX中有着比Swing更好的表现方式.它使得程序界面设计和程序逻辑设计完全分开,便于代码的可读性和以后的可维护性. JavaEE体系架构采用传统的MVC设计模式,分为Model.View.Controller三层,其中:Model即模型层,定义数据模型和业务逻辑.为了将数据访问

上个项目的一些反思 I

最近一直在反思之前的项目,发现了很多问题.比如数据安全... 虽然项目需求是只展示最新的数据,所以几乎没用什么本地存储.除了通讯录和用户的Token. 用户通讯录另表,今天反思下用户的Token的存储,我直接用<Preferences>存在了本地.一旦被非法获取,配合API借口,后果不堪设想... 就像这样. /* * 正如其名,还是存储些用户的设置比较好~ */ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaul

Catch Application Exceptions in a Windows Forms Application

You need to handle the System.Windows.Forms.Application.ThreadException event for Windows Forms. This article really helped me: http://bytes.com/forum/thread236199.html. Application.ThreadException += new ThreadExceptionEventHandler(MyCommonException

关于2016.12.12——T1的反思:凸包的意义与应用

2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度来判断. 这就是下切线(我自己瞎编的名字): 好像是对的啊: 然后我就保证必AC的希望,用这种写法交了,然后就只得了N=2的暴力分... 自以为是正解,却落得如此下场... 为什么?这样不对吗?借用学长的力量,果然被Hack掉了: 这种情况,圆心排序后,检测的顺序并不是圆上的切点的顺序,自然就会挂. 蓝瘦

暑假反思

成功的,又一门功课成功地成为了全班倒数,还是最能体现一个人编程水平的c++实训.又得好好反思一下自己的学习状态了. 刚来到华工时的那种不甘,让我近乎维持着高中的学习状态,课内成绩荣登榜首,ACM一直保持着努力状态,这时的我的代码能力可以说是超过了除了几个原本有底子的大多数人.自大一上打下良好的基础之后,一直维持“学霸”状态的我开始反思:我想成为什么样的人?我所热爱的到底是什么?并且开始打算大一下甚至花一年的时间来明确这个方向. 直到现在我都觉得那个时候的决策是正确的. 但是,从现在来看,我的寻找

try~Catch语句中异常的处理过程

[2014/10/12 21:40]文章待续~ 1.函数自身捕获处理异常的情况 下面的例子介绍了try~catch语句中出现异常时语句的执行顺序: package month10; import java.lang.*; public class TryCatch{ /* * 函数产生一个ArithmeticException异常 */ public static void First(){ System.out.println("第一个异常处理的例子"); try{ //double

android在程序崩溃时Catch异常并处理

Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 写一个例子来理解. 1.新建项目,新建一个MyCatchException类,实现uncaughtExceptionHandler. //全部错误捕捉器 public class MyCatc

有return的情况下try catch finally的执行顺序

http://www.cnblogs.com/lanxuezaipiao/p/3440471.html?cm_mc_uid=89442383850615035911861&cm_mc_sid_50200000=1505491196 1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么

[[email&#160;protected]] Omit catch error block if not needed

From [email protected], you can omit catch error block. Before: try { throw new Error('whatever'); } catch(err) { console.log(err) } Now: try { throw new Error('whatever'); } catch { console.log("error happened") } It is just a syntax sugar, if