我们在调试代码的时候中间出现了异常,但是我们又没有做异常捕获,稀里糊涂地把错误数据存到了数据库中,我们又需要将这些数据给删除,将数据库复原,才能达到之前我们需要的效果。
所以,接下来我们讲一讲如何避免操作资源,强制返回。
public static void saveResource() { System.out.println("shit happens"); System.out.println("save to db"); System.out.println("save to redis"); System.out.println("send message to mq for money payout"); }debug:
我们发现程序出现了异常
Force Return
它会只打印shit happens,不会继续向下执行了。
左下角平铺模式Flat Mode:
断点:如果把程序想象成一条平滑的线,那么断点就是一个结,可以让程序中断在需要的地方,从而方便其分析。
设置断点:在代码里需要调试的地方,鼠标双击代码行号的左边,再次双击即可取消断点。
在调试中可以设置的断点类型有五种:
行断点:
spring在注册Bean定义(registerBeanDefinition)时,如果是org.springframework.demo.MyBean,就挂起线程,可以开始单步调试了。
对于命中次数(hit count)的使用,一般是在循环中,第N个对象的处理有问题,设置hit count = N, 重调试时,可以方便到达需要调试的循环次数时,停下来调试。
方法断点:
方法断点的好处是可以从方法方法进入或者退出时停下来调试,类似行断点,而且只有行断点和方法断点有条件和访问次数的设置功能。
但是方法断点还有另外一个好处,如果代码编译时,指定不携带调试信息,行断点是不起作用的,只能打方法断点。
有兴趣的可以将Add line number…前的勾去掉,调试下看看。
观察断点:
在成员变量上打的断点。只有对象成员变量有效果,静态成员变量不起作用。
可以设置变量被访问或者设置的时候挂起线程/VM。
异常断点:
系统发生异常时,在被捕获异常的抛出位置处或者程序未捕获的异常抛出处挂起线程/VM, 也可以指定是否包括异常的子类也被检测。