有什么办法让程序抛出异常后依然执行?

bios8086 2011-01-14 08:49:56
有这样的办法吗?
...全文
1113 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
路痴哥斯拉 2011-01-14
  • 打赏
  • 举报
回复
某些情况下是必要的,没必要那么扣所有异常必须当时处理
特别是对于一些批处理,且单项与上下文无关的处理,写log比抛出异常当时处理错误报告更友好

伪代码:
logoutput(string)
{...}

for(;;)
{
try
{
单行处理
}
catch(Exception e){
logoutput(当前参数、环境、等等 + e.Message);
}
}

//在退出或事务完结时发送错误报告,即log内容

yudengchang 2011-01-14
  • 打赏
  • 举报
回复
既然这样,异常就不要捕获了呀,你这样做很没道理
  • 打赏
  • 举报
回复
你倒是没有抛出异常,可以用户就会为了胡乱ddl.SelectedValue值而退货了。
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 starfd 的回复:]

C# code
DropDownList ddl;
string dValue;
try
{
ddl.SelectedValue = dValue;
}
catch
{
}



这样没意义???
[/Quote]
这样就直接把程序员辞退了就行了。

软件开发很大意义上就是修复任何bug,这样的软件才能让用户得到正确的结果。如果实在是在当初无法预知的异常,自然会有在软件界面层统一的错误信息处理模块来记录或者报告。

如果一个程序员为了掩盖异常,而不顾把内部数据搞乱,那么显然不符合参与集体开发活动的底线要求。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 net_lover 的回复:]
既然异常了,你继续执行还有什么意义?对象、数据等都是错误的了,你得出的结果还有用吗?
[/Quote]
DropDownList ddl;
string dValue;
try
{
ddl.SelectedValue = dValue;
}
catch
{
}


这样没意义???
兔子-顾问 2011-01-14
  • 打赏
  • 举报
回复
换用vb.net
函数最开始写一句
On Error Resume Next
即可
极地_雪狼 2011-01-14
  • 打赏
  • 举报
回复
你将用个LOG软件,在catch 将异常写到日志里。
yfk 2011-01-14
  • 打赏
  • 举报
回复
catch不加退出程序语句就行。
gomoku 2011-01-14
  • 打赏
  • 举报
回复
[Quote= ... 的回复:]
...空的catch{}就行了,把错误吃掉
[/Quote]
这种做法比初学者还不如。

有个简单的判断,下面的写法几乎一定是错的:
catch(){...}
catch(Exception e){...}

有些异常是可以处理的,比如网络连接可能暂时中断等等,这种异常处理是非常必要的,程序也能继续正常运行。

处理这些异常的前提条件就是你能理解这些异常,是IOException,是SocketException等等。
同一句话反过来讲,就是你没有办法处理你不能理解的异常。

不理解异常的情况下“把错误吃掉”,将掩盖编程错误,将导致程序处于更错误的状态,将导致连死都不知道怎么死的。
_三皮_ 2011-01-14
  • 打赏
  • 举报
回复
做个循环,catch到错误CONTINUE,没有错误BREAK。这样出错了,随你在TRY几次(看循环条件),重执行还能捕捉错误。
_三皮_ 2011-01-14
  • 打赏
  • 举报
回复
应该把 try 的代码块单独做成方法,在catch里再调用一次
jianglai11 2011-01-14
  • 打赏
  • 举报
回复
try
{}
catch(exceptin ex)
{
//异常处理
}
finaly
{
//调用你要继续执行的方法
}
孟子E章 2011-01-14
  • 打赏
  • 举报
回复
cacth里面执行就可以了
bios8086 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 qq7300 的回复:]

try
{
throw new Exception("异常啦");
}
cacth
{}
Console.WriteLine("不理异常,继续执行");
你看这段代码就懂啦。
[/Quote]
谢谢!!
bios8086 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 net_lover 的回复:]

既然异常了,你继续执行还有什么意义?对象、数据等都是错误的了,你得出的结果还有用吗?
[/Quote]
当然有用了,这次不行取下一次的数据啊
ningweidong 2011-01-14
  • 打赏
  • 举报
回复
try catch之后,它本身就会继续住下执行的。
比如
try
{
}
cath
{
}
它处理这就会继续往下走
QQ7300 2011-01-14
  • 打赏
  • 举报
回复
try 
{
throw new Exception("异常啦");
}
cacth
{}
Console.WriteLine("不理异常,继续执行");
你看这段代码就懂啦。

hanzhehanzhe 2011-01-14
  • 打赏
  • 举报
回复
10楼说的没错,既然捕获到了错误就应该处理啊
yyg_pl 2011-01-14
  • 打赏
  • 举报
回复
try...catch

catch中什么也不写
auogsy 2011-01-14
  • 打赏
  • 举报
回复
在catch有finally写要实行的代码
加载更多回复(9)

110,502

社区成员

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

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

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