如何取得异常,在线等!!!!!!!!!!!!!!

sunday_7917 2006-09-15 03:38:07
比如有个方法如下
public void Test()
{
try
{
...
}
catch( Exception e )
{
throw new Exception( e.Message );
}
}

现在来调用这个方法,如下:
public void tt()
{
Test();
}
在tt这个方法里我怎么知道Test是否执行了catch里的语句,也就是说我怎么知道Test是否引发了异常,然后获取Test里抛出的异常(e.Message).
...全文
255 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jickie阿文 2006-12-07
  • 打赏
  • 举报
回复
不好意思,没仔细看楼主的代码
上面所有的throw new Exception( e.Message );
一定要改为
MessageBox.Show(e.Message);
不要以为我和楼主一样,呵呵,开玩笑
jickie阿文 2006-12-07
  • 打赏
  • 举报
回复
如果是只是想得到Test方法执行的异常的话,直接这样写就可以了呀?
比如有个方法如下
public void Test()
{
//try
//{
...
//}
//catch( Exception e )
//{
// throw new Exception( e.Message );
//}
}

现在来调用这个方法,如下:
public void tt()
{
try
{
Test();
}
catch( Exception e )
{
throw new Exception( e.Message );
}

}
如果是想确定是否执行了异常时的代码,追加一个变量就可以了啊
string Err =null;
public void Test()
{
try
{
...
}
catch( Exception e )
{
Err =e.Message;
throw new Exception( e.Message );
}
}

现在来调用这个方法,如下:
public void tt()
{
Err=null;
Test();
if(Err!=null)
{
...
}
}


liujia_0421 2006-12-07
  • 打赏
  • 举报
回复
try
{
...
}
catch( Exception e )
{
throw new Exception( e.Message );
}

你虽然在Test方法捕获了异常,但同时又throw new Exception( e.Message );即又给抛出了..

两种方法可以解决..

第一:在方法中捕获后就处理
public void Test()
{
try
{

}
catch(Exception ex)
{
//处理,比如说弹出个对话框.
  MessageBox.show(ex.Message);
}
}


第二:如果在方法中捕获,又将异常抛出,可以在上一层对其进行捕获..

try
{
Test();
}
catch(Exception ex)
{
MessageBox.show(ex.Message);
}
sanmu_bradley 2006-12-07
  • 打赏
  • 举报
回复
没搞明白,既然是调用来处理异常,首先是要捕获异常.tt这个方法怎么来捕获Test方法里的异常.
-----------
tt调用TEST,TEST抛出异常,当然给TT喽。TT有TRY,CATCH语句,当然就捕获了。这有什么疑问?
feifeiyaqi3 2006-12-07
  • 打赏
  • 举报
回复
不能用throw new Exception( e.Message );增加了性能开销,又没解决异常

用输出console.writeline(""+ex.message);
多用catch 异常是层层相调用的
feifeiyaqi3 2006-12-07
  • 打赏
  • 举报
回复
public void Test()
{
try
{
...
}
catch( Exception e )
{
Console.writeline( "error"+e.Message );
}
}

public void tt()
{
try
{
Test();
}
catch
{}
catch{}
}

southsky8019 2006-12-07
  • 打赏
  • 举报
回复
这个帖子里好多星星~
晃的眼晕啦@_@
GXY2005 2006-09-18
  • 打赏
  • 举报
回复
没搞明白,既然是调用来处理异常,首先是要捕获异常.tt这个方法怎么来捕获Test方法里的异常.
-------------
tt里面也加上try catch 來捕獲錯誤
真相重于对错 2006-09-18
  • 打赏
  • 举报
回复
首先要明白什么异常,什么时候抛出异常,异常一般是指,无法避免,自己又无法处理的错误,所以使用异常时,性能的要求已经退居其次了,另外就楼主的要求我只是些一个比较简单代码,除我写的以外还可以用
catch( Exception e )
{
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace( e );
for( int i=0 ; i<st.FrameCount ; i++ )
{
System.Diagnostics.StackFrame sf = st.GetFrame(i);
System.Reflection.MethodBase mb = sf.GetMethod();
}
来获得程序调用栈。
scow 2006-09-16
  • 打赏
  • 举报
回复
看来还是没明白,因为Test()里面捕获并将异常抛出,这样你在tt里执行Test时如果没有try catch来捕获这个异常,就会出错,异常继续往上传递让.net来处理了,如果加了并没有再抛出,就是tt来处理。异常会一直往上传递,直到某一层来处理它并不再抛出。
sunday_7917 2006-09-15
  • 打赏
  • 举报
回复
谁有比较好的办法,可以告诉我不
最好是有源码,先谢了,分不够可以加
scow 2006-09-15
  • 打赏
  • 举报
回复
如果throw,则异常抛给了调用方,即tt
www_123du_com 2006-09-15
  • 打赏
  • 举报
回复
public void Test()
{
try
{
...
}
catch( Exception e )
{
throw new Exception( e.Message );
//这是最丑陋的异常处理方式,平白无故隐藏了原始异常,又增加了性能开销,而且又没解决这个异常

//一般来说假如需要再抛出来的话直接throw e;就行了(但不提倡,因为throw是非常损耗性能的)。或者如果你要构建一个另外的异常,请把原始异常放在inner里面,例如:throw new ArgumentException("参数错误",e);
}
}
sunday_7917 2006-09-15
  • 打赏
  • 举报
回复
没搞明白,既然是调用来处理异常,首先是要捕获异常.tt这个方法怎么来捕获Test方法里的异常.
viena 2006-09-15
  • 打赏
  • 举报
回复
在catch中throw等于没有catch一样
会向上抛出的,由调用者来处理异常
viena 2006-09-15
  • 打赏
  • 举报
回复
仍然是用Catch
真相重于对错 2006-09-15
  • 打赏
  • 举报
回复
public class TestException : Exception
{
..

}
public void Test()
{
try
{
...
}
catch( Exception e )
{
throw new TextException( e.Message );
}
}
public void tt()
{
try{
Test();
}
catch( TestException te )
{
...TestException
}
catch
{
别的

}
}
sunday_7917 2006-09-15
  • 打赏
  • 举报
回复
自己先顶一下

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧