标题:[求助]问一个简单的关于异常的问题!
只看楼主
c_sharp_man
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-9-28
 问题点数:0 回复次数:1 
[求助]问一个简单的关于异常的问题!

源程序如下:


using System;

namespace Exception_Test
{

class Class1
{
static void F()
{
try
{
G();
}
catch(Exception e)
{
Console.WriteLine("Exception in F:"+e.Message);
e=new Exception("F");
throw;
}

}
/*------------------------------------------------------------------------------------------------------*/
static void G()
{
throw new Exception("G");
}

/*------------------------------------------------------------------------------------------------------*/
[STAThread]
static void Main(string[] args)
{
try
{
F();
}
catch(Exception e)
{
Console.WriteLine("Exception in Main:"+e.Message);
}
Console.ReadLine();

}
}
}


这是书上的一个try-catch使用的例子,运行结果是:

Exception in F:G
Exception in Main:G

请问在处处理完G()方法的异常后,已经改变了异常变量 new Exception("F"); 再次将异常 抛出.
结果应该是Exception in Main:F 才对啊,为什么输出还是G呢?

书上说这个再次抛出的异常与最初捕获的异常是同一个, 异常变量明明改变了啊

2006-03-11 14:37
ytyt654
Rank: 2
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2006-2-13
得分:0 
A throw statement with no expression can be used only in a catch block, in which case, that statement rethrows the exception that is currently being handled by that catch block.


方法F改一下, 就能在Main()中捕获F
static void F()
{
try
{
G();
}
catch(Exception e)
{
Console.WriteLine("Exception in F:"+e.Message);
e=new Exception("F");
throw e;
}

}

[此贴子已经被作者于2006-3-11 16:58:48编辑过]


2006-03-11 16:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-49767-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137410 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved