banner

种情况下,可以使用多条catch语句,就像switch语句中的条件一样。与default语句对应的是“捕获所有异常”的catch语句:catch(…)。

警告: 使用两条这样的catch语句时要特别小心:一条捕获基类异常,另一条捕获更具体的派生类异常。可能这两条catch语句都将执行,有时候这正是您需要的,而有时候您不希望如此。您必须知道这一点。

tips

24.4.3 使用引用以多态方式捕获异常

异常也是类,可以多态方式使用它们。通过按引用传递异常,可根据异常的运行阶段类型采取相应的措施。

程序清单24.2所示的程序PolyException演示了如何以么就需要在更多的地方添加释放资源的代码,这是一件相当繁琐的工作。好在只有直接用 new 生成的对象或数组需要人为释放,而直接在栈上分配的局部变量无须如此——在异常向外抛出时各对象的析构函数会被自动调用,函数退出后这些变量所占用的栈空间会被自动回收。因此,解决这一问题的一个捷径是把一切资源包装成对象,把对象定义为栈上的局部变量,这样当异常需要向外抛出时,对象的析构函数就会被自动调用,将资源回收。例如,上例中的动态数组,完全可以用 ST L 的 vector 来管理,上面的程序可以改写成这个样子:

这样比原先方便了许多。然而,有时有些对象又不得不用 new 在堆上生成,因为毕竟用 n

文化艺术领域,对于人工智能来说也不神秘了。神经网络很像人类的大脑,有无数隐秘的神

经通路。李白要在醉酒时才能诗兴大发,那是因为醉酒状态导致一些平时蛰伏的神经通路被

激活。未来人类可以不用借助醉酒,而是借助神经网络尝试开发灵感。

法律、金融等专业人士的日子也将被改变。由IBM研发的世界首位人工智能律师

Ross(罗斯)在2016年就职于纽约Baker & Hostetler律师事务所,负责帮助处理公司破产等

事务。这是一个真正可以全身心为雇主考虑的法律全才,不会像人类律师那样昂贵,普通律

师或者法官为何不试试利用这样的产品呢?2016年12月,北京市高级人