try 中执行的语句抛出的异常被捕获,CLR开始在catch中找与之匹配的exception,如果没有找到,CLR会继续寻找调用堆栈中相匹配的异常类型,找到改堆栈的top之后,如果还是没有想匹配的异常类型,成为unhandled exception。
当所有的finally都被执行过之后,catch 执行,代码执行一些操作从异常中恢复过来,在catch段最后,可以做三个选择:
重新抛出同样的异常,通知调用堆栈中更高层的异常;
抛出另一个异常,给调用堆栈中的更高层更多的异常信息;
什么也不做。