要使用.NET 异常捕获机制的模型很简单,见如下代码
异常处理就是C# 为处理错误情况提供的一种机制。它为每种错误情况提供了定制的处理方式,并且把标识错误的代码与处理错误的代码分离开来。 简单来说,已知或者未知的错误,通过异常捕获机制都能得到合适的处理。这里要介绍的是异常捕获机制的一点小小的技巧应用
上面的代码,有两层try-catch,我们看里面一层,我们发现里面一层的catch没有做处理,也就是说,这里会捕获到try语句块中的异常,即实例化一个TcpClient对象的异常。我们知道要实例化一个TcpClient对象需要两个参数,第一个IP地址,第二个端口号,两者结合起来标示一个网络设备。 如果端口被占用了,就不能实例化我们的TcpClient对象,当然会抛出异常;而此时,异常被内层的try-catch捕获到,所以程序不会中断其运行状态,继续执行我们未结束的for循环。也就是为什么我们的端口扫描程序会产生如下图效果的原因 大家可以联想到,是不是还有很多地方值得用这种比较巧妙的方法呢? 我做过的例子中,有个判断字符是否合法化的问题,用的也是这种方法。 当然在某些特定的场合,大家也许会发现这种小技巧更合用!最后有点值得说明的是,根据我的经验这种做法有时候是以消耗时间为代价的,大家慎重选择!