温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
前面我们说了这个问company成功完成时的这个回调,即使有异常我们也能感知,那接下来我们再来说一下handle方法,这个handle呢,和我们这个company一样,但是呢,我们说问company的缺点就是它只是感知,感知我们上一步成功了,还是出现问题了,但是它不能修改我们的返回结果啊,我们可以使用exceptionally来修改返回结果,同时我们也可以使用handle方法。来完成这个事情。比如我们现在确实想要在异常的时候来得到返回结果了,那我把这一块呢,我来注掉。我还是拿到我们这一块的执行completeliable future好,那现在呢,想要感知结果了,来看一下,我们以前呢是使用问company,那这个when company呢,只能感知我们这个结果,但不能进行处理,但我们可以在这点一个handle handle呢,那这就叫处理,我们发现这个handle点进来,它呢传一个这个边function好,我们点过来,我们发现呢,这个function还是一样,传入两个参数,返回一个参数,所以呢,它既能感知我们的返回结果,还能感知异常,还能修改我们结果,这就是我们说的handle方法,就是方法执行完了后的处理方法,方法执行完成后的处理,无论是成功完成还是失败完成。
01:29
好,我们把这个呢拿过来,好,我们前面的呢,这个是方法成功完成后的处理方法完成。后的感知,我们就叫感知啊,这个是完成后的处理好我们这个handle动呢,我们就来传一下,由于呢,我们这个handle动里边接收的是我们指定的这个,我把这个呢复制过来,CTRLC,那它里边需要什么,我们就给它传什么,它呢需要一个TUT,我们都知道,第一个呢是返回结果,第二个呢是异常,我们throw的异常,然后呢,我们来对它进行一个处理,箭头函数,那处理以后呢,还得有一个返回结果,比如默认返回值整一个零好走,所以我们这一块呢。
02:20
就应该这么来编写if,如果result不等于空,说明我们有返回结果,那么就来返回我们的返回结果,比如呢,我返回的是给返回结果乘以一个二。如果我们返回结果是空的,哎,如果我们这个异常不等于空,出现异常了,异常不等于空,说明我们这个出现异常了,出现异常呢,我们就给它返回零,所以呢,我们完全可以编写我们这个异步执行后的处理结果,那么最终都给它整一个返回零,如果两个都不走,就返回零,我们来看一下最终我们的这个异步任务返回的是零,还是我们这个结果乘二后的值,好,我们还是来启动一下。
03:10
那我们发现这一块呢,慢摁直接返回了零,返回零的原因是由于我们肯定在这儿感知到了异常,因为这是十除零,那如果我们变成了十除四,好,我们来重新启动一下。如果是一切正常,相当于我们有结果了,那有结果了以后呢?我们以前异步任务运行的结果是二,但我们最终拿到的返回值却是四,那是由于我们handle方法给它改掉了,好,这就是我们说的handle,但我们这个方法执行完,我们这个异步任务执行完以后,对它做的后续处理。
我来说两句