请教:如何使异常不抛出到外层try...catch?
例如:
//外层
try
{
//内层
try
{
//语句a,引发异常
}
catch (Exception ex)
{
//语句a引发的异常在此处理,不再向外层try...catch抛出
}
}
catch (Exception ex)
{
//不捕获语句a引发的异常
}
例如:
//外层
try
{
//内层
try
{
//语句a,引发异常
}
catch (Exception ex)
{
//语句a引发的异常在此处理,不再向外层try...catch抛出
}
}
catch (Exception ex)
{
//不捕获语句a引发的异常
}
解决方案 »
- 关于C#中音频播放API函数的问题!
- C#
- 如果一个查询数据的参数有两个以上相同的之值,如何解决!
- 未能写入输出文件“C:\Documents and Settings\xxx\VSWebCache\xxx\myWebApp\obj\Debug\myWebApp.dll”--“目录名无效。 ”
- 【菜鸟提问】生成一个Excel文件,其中有字符串‘0000’,但打开excel却发现成为了‘0’,如何解决啊?
- 【第一次发帖】求解!C#一段代码不知错在哪
- 求大神看看
- 关键字 'order' 附近有语法错误。
- 简单问题,高手帮忙啊,我已经没分可给了
- asp.net使用form身份认证“串号问题” ?
- 请教:WindowsMobile6.1+WebService大数据量传输问题
- C#串口通信索引超出了数组界限问题
比如一个属性的递归查找,子属性可访问父对象,导致了一个死循环,这在编译时是发现不了的,一旦执行,就会发生无法捕获的异常,直接应用程序崩溃。
{
try
{
b();
}
catch (Exception ex) //此处会所获到来自func b()的异常
{ }
}func b()
{
try
{
Thread.CurrentThread.Abort(); //此处抛出异常
}
catch (Exception ex)
{ }
}是不是Thread.CurrentThread.Abort()抛出的异常需要特殊处理?
换成:
return;
这样吗:func b()
{
try
{
Thread.CurrentThread.Abort();
}
catch (System.Threading.ThreadAbortException tae)
{ }
}这样没作用的
{
//内层
try
{
//语句a,引发异常
}
catch (Exception ex)
{
throw;
}
}下面可以这样写
catch (Exception ex)
{
//不捕获语句a引发的异常
}也可以这样写
finally
{}
是这样吗?public void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
return;
}……
func b()
{
System.Windows.Forms.Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException);
try
{
Thread.CurrentThread.Abort();
}
catch (System.Threading.ThreadAbortException tae)
{ }
}这样也是没效果的
catch {}尝试 里面的catch 不带参数。
异常是用来对付编程时没有办法预测的状况的,不是用来控制程序流程的。
控制流程可以用变量,返回值等。
比如把Thread.CurrentThread.Abort(); 换成
this.StopWorker = true;
return;二、Thread.Abort
在绝大部分情况下,Thread.Abort用了就等同于错误(例外的情况:比如在运行别人提供的dll中的线程,才有可能适当使用)。三、理解ThreadAbortException
ThreadAbortException(MSDN帮助)是个特殊的异常,可以捕获但会自动重抛。除非显式地调用Thread.ResetAbort();