本文不区分语言,只为记录一次有收获的面试。
面试官:什么情况下用到try-catch?
程序员:代码执行预料不到的情况,我会使用try-catch。
面试官:什么是预料不到的情况呢?
程序员:比如我要计算a除以b,但是b是变量,如果b等于0程序就会出错,所以我会将程序代码放在try中。
面试官:还有其他情况会遇到try-catch吗?
程序员:我会在上传文件时使用try-catch,之前做过一个网站有上传文件的功能,线下测试的时候没有问题,但是那个线上环境是一个仅有100M的虚拟空间,除了代码剩余的空间所剩无几,所以网站上线后没过多长时间上传文件就在catch中报错,空间不足。
面试官:还有其他场景会用到try-catch吗?
程序员:我还会在使用数据库事务的时候使用try-catch,如果事务执行成功就提交事务,如果事务执行失败就由catch提示错误并回滚事务。还有就是在使用curl方式访问其他网络地址的时候会用到,如果网络访问出错或者网络访问超时就在catch中抛出错误。还有就是之前写winfrom软件的时候调用摄像头和打印机,会使用try-catch。
面试官:那我可否归纳为当程序需要打开一个资源,使用完后需要关闭的情况下,需要使用try-catch。就想你上面说到的文件上传写入,数据库事务的提交,还有摄像头和打印机的使用,都是这种情况。
除了上面所说的情况,你还有其他场景会用到try-catch吗?
程序员:还有就是我的程序调用其他人写的程序接口的时候,我不敢保证别人的接口返回的都是约定好的返回值。所以如果接口返回约定好的返回值,那么try中的程序正常执行,如果意料之外catch抛出错误。