00:00
好,接下来呢,我们来说一下异常处理优化,那么这个异常处理优化呢,就是专门针对于我们类似于这样,就是检查我们的系统的啊接口参数的时候,然后抛出异常的这种情况,那么我们先来说一下我们要用的这个这种的优化手段啊,就是我们未来呢,想用这个断言来优化,那我先来说一下什么是断言,要了解断言的话呢,咱们再了解啊,它其实是测试的一部分,测试框架的一部分,我们先了解一下测试框架的这个断言的用法,所以呢,我们在测试这个。文件夹里面test这个里面新建一个测试类,叫assert test assert呢就是断言的意思,然后接下来呢,我们先写一个普通的不使用断言的测试的一个方案,Public wide test1哈,然后接下来呢,比如说我们也是跟刚才差不多,就弄一个对象哈,对对象任何类型的都可以,然后呢,给他看这个设一个值呢,我们判断一下这个对象如果等于none的话,那我们呢,就抛一常,对不对,跟刚才一样啊,所以呢,Through。
01:10
肉啊,然后new啊,这个里面有一个特定的一个呃,判断参数,呃,异常的这么一个exception叫illegal argument exception,这个呢就是参数不合法的参数异常啊,好,那么我们就写,比如说参数错误对吧?好这块呢,我们就抛了一个异常出来,好,我们先来运行一下这个代码。好,大家看这个地方呢,就有了一个呃,这样的一个提示信息,他说呢,Java点浪illegal argument exception,那这个呢,其实就是咱们在这儿抛出的异常,然后咱们在这定义了一个异常消息叫参数错误,他在这个地方就展示出来了,所以这块呢,是我们测试当中抛异常的一个啊基本的解决方案,当然了,在测试框架当中还有一种方法呢,来解决像这种业务逻辑就叫断言的逻辑。
02:14
Public wide test up,好,然后我们在这个地方呢,来判断一下叫做if啊。还是还是先创建这个欧吧,好,然后但是呢,后面呢,用断言来替代这个if,用断言替代F结构,怎么去替换呢,叫assert assert呢是一个断言类,它呢是the unit里面的,也就是测试框架里面的一个一个包,然后里面呢有个not呢,就是我断言我这个O呢,一定是不等于那的,因为我想这这个判断的就是如果它等于none了,就报错了对不对?所以我断言它不等于那就是成立的,那一如果等于呢,就是报错的了,所以我断言它挠呢,一旦不挠那了,我怎么办呢?断言谁断言这个O啊,一旦这个O不挠那了怎么办呢?我就是啊,参数错误。
03:20
明白哈,所以呢,我们来看一下右键。大家看是不是报告的这个错误结果跟刚才一模一样啊,也就是说其实这种写法和这种写法是等同的啊,那我们来看看他这个not now里面是怎么写的哈,Control out加加指标点击一下,你会发现这里面的代码是不是跟我们写的这个断言的代码基本上是一模一样的。对吧,就是这个意思嘛,啊,只不过这个呢,变量名跟咱起的不一样,这个呢是通过参数传进去的哈,好,所以呢,这个就是断言的本质了,那接下来呢,大家想一想,如果我们想用断言来处理我们这块的啊,这样的一个啊A结构的话,是不是我们就参考着。
04:10
测试测试框架里面给我们提供的assert,我们写一个自己的S就行了,我们在S当中也可以定义类似于not这样的方法,然后替换我们原来的这个if结构啊,所以这个呢是一般情况下,我们企业开发的过程当中会用这种断言的方式呢,去判断参数是否合法,那这种方式呢,会更简洁一些啊,它的代码好,那我们来看一下我们怎么样去自定义这个断言,那我们也定义一个叫assert吧,因为这个assert呢,大家一看就是断言啊,是一个通用的名字,我们把它,我们把它写在这个。嗯,还是写在这个exception里面。好,然后接下来呢,在这个里面呢,我们就写一个叫public代,那很显然我们在这个测试这个里面用到的这个,呃,ER里面的not not,它肯定是一个静态方法,是不是public static not now啊,我们也写这样的一个方法,好,那所以呢,就public static not呢啊然后接下来呢,我们接收参数,接收参数呢,我们就接收我们的这个object就行了,避证啊,我们要判断这个对象是不是捺,如果这个对象是那的话呢,我们就抛一常哈,然后我们来看一下我们之前这块怎么写的,如果它是捺,我们就抛一常,所以我我先把它复制进来。
05:35
好,那如果这个OBJ是那。对吧,如果这个OBJ啊是,那然后呢,我就抛异常,而且抛的这个异常呢,你不能就是就叫就叫这个异常,这一个太特殊了,我们再写一个通用的啊,这个通用的话呢,这个地方呢,我们就直接接收一个枚举就行了。啊,然后接收枚举的话呢,这块你得写枚举对象,对R小R啊好,那这个枚举定义在哪?我们定义在这就行了,Response in response,所以呢,这样的话呢,这块就会更灵活一些啊然后接下来呢,我们可以在嗯,这个地方我打印一个日志的,就证明我走了这个断言。
06:18
要个点金色叫做嗯。Object o DJ那。好,这样的话呢,当我们在控制台上看到这个日志的时候呢,就证明呢,我的这个啊断言呢,走到了这个,那这个里面啊,就是这个对象为空了,这个对象一旦为空,我们就逃异常了啊,所以说这就是我们的这样的一个断言,而我再强调一下,这个断言的意思是什么呢?就是断言对象不为空,不为空是正确的,为空报错啊,所以呢,Object为空则。
07:00
好异常明白吧,啊,所以这款呢,就是我们我们整个我们整个的这样的一个。好一个说明了,然后呢,这个是断言它不为空,那实际上我们还有判断,比如说断言他,嗯。你看我们这个assert里面还有很多呢,有断言不为空的,还有断言为空的,是不是还有断言为触的啊,还有断言。嗯,还有断言为没有false,还有true false false反true的反义词就是false是吧,所以一个true能既能判断true能判断false啊,那单断处的还有判断什么的,还有判断,反正挺多的一大堆啊,我们在我们后面的这个啊编程的过程当中呢,也会用到很多的这种不同的业务逻辑场景,不单单只是不为空,所以呢,我们还可以在我们自己写的这个啊ER当中啊,再补充一些其他的断言的内容,那这块也是一样,给大家都写好了,就在这地方有个啊点扎了,我们把它打开。
08:12
然后呢,除了我们刚才写的这个not none之外,我们还可以断言为空,就is now是正确的,如果要是,嗯。呃,这个not now呢就就不正确了,正好跟前面那个逻辑是相反的,这个是is true啊,如果是真呢就成功,如果不是真的就失败,我们就跑一场好,这块呢也是一样的啊,如果两个对象,这个是传了两个对象,这两个对象如果相等的话呢,我们就认为这个是。嗯,这个呃,就是这个叫断元,两个对象不相等对吧?就not equals,那如果这两个对象不相等的话呢,我们就就通过,如果相等的话呢,我们就抛出异常啊,这个是断言不相等,那接下来这就是断言相等,断言相等呢,就是相等的话就通过,如果不相等的话呢,就抛异常啊,然后还还可以判断,就是比如说这个string类型的对象是不是为空字符串,如果是一个空字符串的话呢,啊,我们呢就就报错,如果是不为空字串的话呢,就not empty,我们就认为它是成功的,明白哈,那未来呢,这个里面如果大家有需要的话,你还可以补充更多的断言方法,所以我们呢,就把这几个断言呢补充进来。
09:24
好,业务都逻辑都是啊,有这个可参考价值的哈,但是呢,写代码的时候的这个基本思想都是一模一样的,所以呢,这边我们就不一个一个去写了,咱们大家直接把它整合粘粘贴进来就行了,所以这块呢,就是我们定义的所有的断言了,那么我们这个断言定义完了之后呢,我们就可以修改我们这个controller了,我们这个controller呢,其实就可以用这个断言的。方式去写了,那如果去写呢,直接用我们写的这个assert assert啊,然后呢,我们认为呢,不为空时针,所以就直接not now就行了,那我们把这个谁给它传进去呢?就把我们要判断的这个对象给它传进去啊,如果它发生问题了,我们报错什么错误呢?我们就报这个错误,好这个呢,就是用断言的方式来解决我们的这个异常。
10:18
处理啊,所以呢,我们来看一下是不是跟刚才我们的结果是一样的。嗯,找这个卡重新启动。好,这样的话呢,我们这就重新启动了,启动了之后呢,我们来嗯测试一下吧,直接就还是还是它这个例子就是没有参数哈,确认一个参数as,然后你会发现结果其实是一模一样的啊,只不过我们用的断言的方式呢,来处理我们刚才的啊,这样的一个if else的一个表达式的一个方式,让我们的代码呢,更为简洁一些。
我来说两句