C#中的try-catch语句怎么用

先给出一个程序:classProgram{staticvoidF(){try{G();}catch(Exceptione){Console.WriteLine("Exce... 先给出一个程序:

class Program
{
static void F()
{
try
{
G();
}
catch (Exception e)
{
Console.WriteLine("Exception in F:" + e.Message);
e = new Exception("F");
throw; //re_throw
}
}
static void G()
{
throw new Exception("G");
}
static void Main(string[] args)
{
try
{
F();
}
catch (Exception e)
{
Console.WriteLine("Exception in Main: " + e.Message);
}
Console.Read();
}
}
此程序的结果为:
Exception in F:G
Exception in Main:G

为什么结果中的第二条语句冒号后是 G 而不是 F 呢?
展开
 我来答
疼心0Gm
2010-04-19 · TA获得超过306个赞
知道答主
回答量:89
采纳率:0%
帮助的人:67.9万
展开全部
重新抛出异常的时候,指定异常e就行了,。
要不然,重新抛出的还是原来的那个。

static void F()
{
try
{
G();
}
catch (Exception e)
{
Console.WriteLine("Exception in F:" + e.Message);
e = new Exception("F");
throw e; //re_throw
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
phoebuswei
2010-04-19 · TA获得超过608个赞
知道小有建树答主
回答量:707
采纳率:0%
帮助的人:674万
展开全部
问题在于new Exception("F")
也就是说,G抛出了一场,F接受了他,但是从新生产一个F异常
明白了吗,New之后就是新的异常了
想得到F直接throw
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式