你在创建的时候写成class, 枚举你要用enum
你问的是老师的代码,还是你自己写的呀,如果是老师的代码,这节课就有。5分钟的时候。如果是你自己写的代码,你贴上来,我帮你看看
new Data() 取得是服务器时间,不是本地时间
400类型错误,路径找不到、或者参数错误。请求到达不了后台所有后台程序不会报错。只有500类型错误才是后台程序错误。手动捕获异常但是没有打印,后台也不会显示异常
那是因为你还没有写枚举类型,像SUCCESS(1,“秒杀成功”),所以系统会报错。
抛出异常,事务会正常回滚,返回值不会
楼上说的很对。老师对于异常处理有以下三步:
1.try catch 将所有的已知的未知的异常全部捕获到后在最后一个catch里处理转变为spring认识的运行期异常再在方法里抛出,这样spring才会进行事务回滚
2.由于所有异常都被最后一个catch转化为同一种异常:SeckillException,这样就难以区分到底是哪些业务异常,所以在最后一个catch前加了两个catch把相对应的每一种异常提前抛出
老师对于异常处理有以下三步:
1.try catch 将所有的已知的未知的异常全部捕获到后在最后一个catch里,处理转变为spring认识的运行期异常再在方法里抛出,这样spring才会进行事务回滚
2.由于所有异常都被最后一个catch转化为同一种异常:SeckillException,这样就难以区分到底是哪些业务异常,所以在最后一个catch前加了两个catch把相对应的每一种异常提前抛出
对于你的问题,如果把前两个catch都去掉,那么前面跑出的异常都会被最后一个catch捕获,进而转化为SeckillException,就不能体现到底具体是哪一种子异常了
try/catch包围快捷键不是 选中要包围的语句 然后 Ctrl+Alt+T 么
或者 到 File-Editor-Live Templates 里创建一个快捷输出
你试试在第一行加个;
之前接口加密是按照(id加/再加一堆复杂的乱码)把括号里的加密,你发的判断是要么为空 要么直接id加密后的结果,显然跟我们自己定义的方式加密后的接口不一致 就要抛异常 这是防止用户没有拿到接口或自己把id加密去当接口
<insert id="insertSuccessKilled">
INSERT IGNORE INTO success_killed(seckill_id,user_phone)
VALUE (#{seckillId},#{userPhone});
</insert>
不要忘记 IGNORE 这个
发生运行异常 郑哲service操作都会回滚 不进行操作
你检查下你接口的方法签名跟实现类的方法签名是否一致
楼主有解决方案了吗?
在我们自己定义的实例最后要加上一个分号
是的,写错了。
重复秒杀会抛RepeatKillException异常, 声明式事务检测到sevice层抛出运行期异常了就会自动回滚,回滚是以方法为整体回滚。 我说清楚了吗,没有说清楚我再讲一遍 。
需要取反没错
alter table table_name rename column old_colum_name to new_column_name;