| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:[求助]问一个简单的关于异常的问题!
只看楼主 加入收藏
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
快速回复:[求助]问一个简单的关于异常的问题!
数据加载中...
 
   



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

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