平时在使用sqlserver数据库做一些统计与计算的时候,经常可能遇到错误,最常见的就是除0错误,这个时候,如何让程序优雅的执行呢?这个时候,异常捕获就派上用场了
工具/原料
sqlserver
方法/步骤
1、打开sqlserver客户端管理软件,新秃赈沙嚣建一个sql查询窗口,用于书写sql语句。首先来看在sqlserver中的一场捕获try-catch的语法结构芟鲠阻缒begintry--这里放sql逻辑endtrybegincatch--这里放捕获到异常的处理endcatch
2、在begintry的下面添加正常的sql逻辑,比如,定义一个整型临时变量@x,赋值为10declare@xint=10;
3、接着,再定义一个整型临时变量@y,赋值为2declare@yint=2;
4、众所周知,10除以2是不会报错的。此时,在begintry的下面输出临时变量@x/@y的结果。在sqlserver中按F5就能执行当前窗口的sql语句,print输出的结果,将在【消息】标签中显示,如果所示,不报错的sql正常输出了结果
5、此时,再定义一个整型临时变量@z,给它赋值为0,用于演示报错的情况
6、使用0作为除数肯定是会报除0错误的,这样的数学规则,在sqlserver中也存在,当我们prin隋茚粟胫t@x/@z的时候:1)如果有ca墉掠载牿tch语句,且没有处理异常的话,会说print附近有语法错误2)如果没有catch语句,会直接抛出错误说:遇到以领做除数错误
7、当在正式环境使用的时候,往往不希望看到这一堆错误信息,希望更友好的方式处理。这个时候就可以在begincatch下面添加错误处理代码了。如果是存储过程,就可以将ERROR_MESSAGE()作为output参数的值返回到程序代码中去