C#异常处理匹配顺序

使用try和catch并finally关键字,再次主要记录一下有些比较特别的异常处理。

示例:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace ExceptionTest
 8 {
 9     class Program
10     {
11         static void Main()
12         {
13             MyClass my = new MyClass();
14             try
15             {
16                 my.A();
17             }
18             catch(DivideByZeroException e)
19             {
20                 Console.WriteLine("catch in Main");
21             }
22             finally
23             {
24                 Console.WriteLine("finally catch on Main");
25             }
26
27             Console.ReadKey();
28         }
29     }
30     class MyClass
31     {
32         public void A()
33         {
34             try
35             {
36                 B();
37             }
38             catch(System.NullReferenceException)
39             {
40                 Console.WriteLine("catch ex in A()");
41             }
42             finally
43             {
44                 Console.WriteLine("finally catch in A()");
45             }
46         }
47         public void B()
48         {
49             int x = 10;
50             int y = 0;
51             try
52             {
53                 x /= y;
54             }
55             catch(System.IndexOutOfRangeException)
56             {
57                 Console.WriteLine("catch in B()");
58             }
59             finally
60             {
61                 Console.WriteLine("finally in B()");
62             }
63         }
64     }
65 }

可以看见,在Main捕获A()的异常,在A()捕获的是B()的异常。因此,当执行到B中异常的查找顺序为,按照方法执行的堆栈查找,如下

找到之后,看是执行程序代码,按照正常顺序执行,就是从栈中取B执行,然后取A,最后取Main,执行结果就是这样:

输出结果是:

时间: 2024-10-29 00:38:45

C#异常处理匹配顺序的相关文章

VS2013和VS2015中MVC 区域路由匹配顺序相反

创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改RouteConfig.cs中的路由注册方法,添加命名空间 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.M

Nginx中的一些匹配顺序总结

Nginx中经常需要做各种配置,总结如下: 1.server_name配置 nginx中的server_name指令主要用于配置基于名称虚拟主机,同一个Nginx虚拟主机中,可以绑定多个server_name,各个域名用空格隔开即可.如下: server { listen 80; server_name test.com www.test.com; ... ... } 如果server_name有多个,那么通过代码如$_SERVER["SERVER_NAME"]获取的始终将是Nginx

nginx 匹配顺序

Nginx的Location匹配 Location根据类型分为两种:普通配置和正则匹配 一. 普通配置   普通location根据使用方法又分为两种,格式如下: 1.  location  / { 命令序列 } 解释:括号中定义的表示对当前路径及子路径下的所有对象有效."优先级最低" 用户所有的请求都能被它匹配到.         例子: location / { root /web; 相应策略 } 这说明网页根目录在/web         访问的时候直接http://127.0.

nginx中server块的匹配顺序

客户端发出一个http请求时,nginx收到后会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求. server_name与host匹配优先级顺序如下: 能匹配上的情况优先级顺序: 1.完全匹配 2.通配符在前的,如*.xxxx.com 3.在后的,如aaa.bbb.* 4.正则匹配,如~^\.aaaa\.bbb\.com$ 如果都不匹配的情况下,按下面两种方式处理,优先级如下: 1.优先选

ASA防火墙数据包匹配顺序

文档简介: ASA处理双向流量的顺序,关键点在于是否存在会话,各个厂家处理的顺序不一致,附录juniper以及huawei防火墙的处理顺序 当处理来自或者去往内外网的数据包时,ASA设备经历了路由查找,对主机会话的数量进行限制,将数据包与所配置的访问控制列表(ACL)进行匹配检查等一系列操作. 取决于接收流量的接口(流量的方向),ASA以不同的顺序处理这些操作.下面列出了ASA从Inside接口收到了一个目的地址是位于外部接口的一个主机的数据包时所经历的操作顺序. 从接口收到数据包:Inside

防火墙数据包匹配顺序

文档简介: ASA处理双向流量的顺序,关键点在于是否存在会话,各个厂家处理的顺序不一致,附录juniper以及huawei防火墙的处理顺序 当处理来自或者去往内外网的数据包时,ASA设备经历了路由查找,对主机会话的数量进行限制,将数据包与所配置的访问控制列表(ACL)进行匹配检查等一系列操作. 取决于接收流量的接口(流量的方向),ASA以不同的顺序处理这些操作.下面列出了ASA从Inside接口收到了一个目的地址是位于外部接口的一个主机的数据包时所经历的操作顺序. 从接口收到数据包:Inside

Nginx location指令匹配顺序规则

location匹配命令 1. "= ",字面精确匹配, 如果匹配,则跳出匹配过程.(不再进行正则匹配) 2. "^~ ",最大前缀匹配,如果匹配,则跳出匹配过程.(不再进行正则匹配) 3. 不带任何前缀:最大前缀匹配,举例如下: location /  代表以"/"开头的搜索匹配, 再没有正则表达式匹配的情况下才进行这个匹配(优先级最低) 4. "~ ",大小写相关的正则匹配 5. "~* " , 大小写

Nginx Location匹配顺序

理论部分 文字释义匹配规则如下: 略述: 1.nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配.如果有多个标准uri可以匹配,就匹配其中匹配度最高的一个location. 2.然后,nginx在使用location块中,正则uri和请求字符串,进行匹配.如果正则匹配成功,则结束匹配,并使用这个location处理请求:如果正则匹配失败,则使用标准uri中,匹配度最高的location. 详细: 1.如果有精确匹配,会先进行精确匹配,匹配成功,立

3-华为防火墙:公共地址集、安全策略匹配顺序

一.实验拓扑:二.实验要求: 三.命令部署:1.手工调整策略之间的优先级:[SRG-policy-interzone-trust-untrust-outbound]policy 0[SRG-policy-interzone-trust-untrust-outbound]policy 1[SRG-policy-interzone-trust-untrust-outbound]policy move 1 before 0[SRG-policy-interzone-trust-untrust-outb