c# throw和throw ex

原文: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方法手动抛出的异常,在日常调试中,这个才是我们想要的结果,我们想要清楚的知道具体的错误代码行,以便准备无误的解决错误。

欢迎任何形式的转载,但请务必注明出处。

文案功底有限,码字不易,不喜勿喷,如果文章和代码有表述不当之处,还请不吝赐教。

原文地址:https://www.cnblogs.com/lonelyxmas/p/9697720.html

时间: 2024-07-28 13:49:58

c# throw和throw ex的相关文章

throw和throw ex的区别

C#中使用throw和throw ex抛出异常,但二者是有区别的. 第一种(不推荐使用,可惜很多人都一直这么用的,包括俺,嘻嘻),这样适用会吃掉原始异常点,重置堆栈中的异常起始点: 1 try 2 { 3 } 4 catch (Exception ex) 5 { 6 throw ex; 7 } 第二种,可追溯到原始异常点,不过编译器会警告,定义的ex未有使用: 1 try 2 { 3 } 4 catch (Exception ex) 5 { 6 throw; 7 } 第三种,不带异常参数的,这个

C#中使用throw和throw ex抛出异常的区别

通常,我们使用try/catch/finally语句块来捕获异常,就像在这里说的.在抛出异常的时候,使用throw和throw ex有什么区别呢? 假设,按如下的方式调用几个方法: →在Main方法中调用Method1方法,try/catch捕获异常→在Method1方法中调用Method2方法,try/catch捕获异常→在Method2方法中故意抛出异常,try/catch捕获异常 使用throw抛出异常 static void Main(string[] args) { try { Met

throw和throw是区别

throw和throws的区别 相同:都是用于做异常的抛出处理的. 不同点: 使用的位置: throws 使用在函数上,throw使用在函数内 后面接受的内容的个数不同: throws 后跟的是异常类,可以跟多个,用逗号隔开. throw 后跟异常对象.

异常机制及throw与throws的区别

Java的异常处理: Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.Java的在线帮     助中对这几个关键字是这样解释的: Throws: Lists the exceptions a method could throw. Throws:列出一个方法可抛出的异常.       Throw: Transfers control of the method to the exception handler. Throw:将方法的控制权

JavaScript--JavaScript 错误 - Throw、Try 和 Catch

JavaScript 错误 - Throw.Try 和 Catch JS Break JS 验证 try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. 错误一定会发生 当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误: 可能是语法错误,通常是程序员造成的编码错误或错别字. 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异). 可能是由于来自服务器或用户的错误输出而导致的错误. 当然,也可能是由于许多其他不可预知的因素.

throw 与 throws的应用

throws---------->把异常交给调用处. 可以结合throw来同时使用. throws 用在方法声明处,表示本方法不处理异常.可以结合throw使用 throw 表示在方法中手工抛出一个异常. 1 class Math { 2 public int div(int i, int j) throws Exception { // 交给调用处 3 System.out.println("********计算开始********"); 4 int temp = 0; 5 t

第10章-异常处理 --- 使用throw抛出异常

第10章-异常处理 --- 使用throw抛出异常 (一)抛出异常 如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例. throw语句的语法格式如下: throw ExceptionInstance; 如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里,显示捕获该异常,要么放在一个带throws声明抛出的方法中,即把该异常交给该方法的调用者处理;如果

throw跟throws关键字

定义一个方法的时候可以使用throws关键字声明.使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理. throws关键字格式: public 返回值类型 方法名称(参数列表,,,)throws 异常类{}: 假设定义一个除法,对于除法操作可能出现异常,可能不会.所以对于这种方法最好将它使用throws关键字声明,一旦出现异常, 则应该交给调用处处理. class Math{ public int div(int i,int j) throws Exception{

JAVA 异常 throw 与 throws

最近一直throw和throw new …… 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息throw则是指抛出的一个详细的异常类型.通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息.而在方法(类)内部通过throw声明一个详细的异常信息.throws通常不用显示的捕获异常,可由系统自己主动将全部捕获的异常信息抛给上级方法:throw则须要用户自己捕获相关的异常,而后在对其进行相关包装,最后再将包装后的异常信息