c# throw和throw ex
c# throw和throw ex
我们在日常开发当中,经常会用到exception异常,并且我们会在exception中的catch块中throw exception,例如:
static void M3() { try { //你的业务代码 } catch (Exception ex) { throw ex; } }
但是大家是否清楚在catch块中 throw和throw ex的区别呢?在一次电话面试中,面试官就问到这个问题了,当时没有答上来,
事后经过测试才知道两者的区别,其实只要自己测试一下,就知道两者之间的区别了,测试代码:
1. throw ex 测试
using System; namespace MuzizMH.Test { class Program { static void Main(string[] args) { M2(); } static void M1() { throw new Exception("M1 Exception"); } static void M2() { try { M1(); } catch (Exception ex) { throw ex; } } } }
在main函数中明显会抛出异常,但是请注意异常信息:
错误信息行号分别为:24和8
2. throw 测试
错误信息行号分别为:13、24和8
总结:相比上面的测试结果,测试2的结果多出了一个行号,也就是M1方法手动抛出的异常,在日常调试中,这个才是我们想要的结果,我们想要清楚的知道具体的错误代码行,以便准备无误的解决错误。
欢迎任何形式的转载,但请务必注明出处。
文案功底有限,码字不易,不喜勿喷,如果文章和代码有表述不当之处,还请不吝赐教。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【 C# 】(一) ------------- 泛型带头节点的单链表,双向链表实现
在编程领域,数据结构与算法向来都是提升编程能力的重点。而一般常见的数据结构是链表,栈,队列,树等。事实上C#也已经封装好了这些数据结构,在头文件 System.Collections.Generic 中,直接创建并调用其成员方法就行。不过我们学习当然要知其然,亦知其所以然。 本文实现的是链表中的单链表和双向链表,并且实现了一些基本方法 一. 定义一个链表接口 MyList 接口里声明了我们要实现的方法: interface MyList<T> { int GetLength(); //获取链表长度 void Clear(); //清空链表 bool IsEmpty(); //判断链表是否为空 void Add(T item); //在链表尾部添加新节点 void AddPre(T item,int index); //在指定节点前添加新节点 void AddPost(T item,int index); //在指定节点后添加新节点 T Delete(int index); //按索引删除节点 T Delete(T item,bool isSecond = true); //...
- 下一篇
JVM 之类加载
一.概述 Java不同于C/C++这类传统的编译型语言,也不同于php这一类动态的脚本语言。可以说Java是一种半编译语言,我们所写的类会先被编译成.class文件,这个.class是一串二进制的字节流。然后当要使用这个类的时候,就会将这个类对应的.class文件加载进内存中。而将这个.class的内容加载进内存,正是通过Jvm类加载机制实现的。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 二.类加载的各个步骤 加载 加载时“类加载”过程的第一步,在加载过程中,虚拟机需要完成以下三件事 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区的这个类的各种数据的访问入口。 值得一提的是,在加载阶段既可以使用系统提供的引导类加载器来完成,也可以由用户自定义的类加载器来完成,相对而是比较自由的,但对于数组则不是这样了,数组类本身不通过类加载创建,它...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果