catch里面为什么不能退出循环?

推倒小十六再说 2019-05-11 05:12:18

bool isComplete = false;
do
{
try{}
catch{break;}
}while(isComplete == false);


catch到异常之后想要退出循环,为什么不行啊?
...全文
270 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
NCScan 2019-05-19
  • 打赏
  • 举报
回复
引用 10 楼 NCScan的回复:
[quote=引用 8 楼 推倒小十六再说的回复:][quote=引用 7 楼 sheisbawdy 的回复:]
把代码贴全才能看出来…

哦哦

bool isComplete = false;
int fwq = 0;
do
{
Stopwatch watcher = new Stopwatch(); //计时器
Thread td = new Thread(() =>
{
html = webClient.Load(url); isComplete = true;
});
td.Start();
watcher.Start();
while (watcher.ElapsedMilliseconds < 5000 && isComplete == false) { Thread.Sleep(100); }
watcher.Stop();
try { if (td != null && td.IsAlive) { td.Abort(); } }
catch
{
do { Thread.Sleep(100); }
while (td != null);
if (fwq < 3){ fwq++;} else { break; }
}

} while (isComplete == false);

全部代码就是这些了,有没有写错的地方啊[/quote] break跳出了你catch里面的循环 。[/quote] 最要命的可能还是个死循环
NCScan 2019-05-19
  • 打赏
  • 举报
回复
引用 8 楼 推倒小十六再说的回复:
[quote=引用 7 楼 sheisbawdy 的回复:]
把代码贴全才能看出来…

哦哦

bool isComplete = false;
int fwq = 0;
do
{
Stopwatch watcher = new Stopwatch(); //计时器
Thread td = new Thread(() =>
{
html = webClient.Load(url); isComplete = true;
});
td.Start();
watcher.Start();
while (watcher.ElapsedMilliseconds < 5000 && isComplete == false) { Thread.Sleep(100); }
watcher.Stop();
try { if (td != null && td.IsAlive) { td.Abort(); } }
catch
{
do { Thread.Sleep(100); }
while (td != null);
if (fwq < 3){ fwq++;} else { break; }
}

} while (isComplete == false);

全部代码就是这些了,有没有写错的地方啊[/quote] break跳出了你catch里面的循环 。
月下YXSoft 2019-05-16
  • 打赏
  • 举报
回复
你的try里没啥可以出错的地方啊 所以catch也执行不到... 而且你catch放个循环干哈
  • 打赏
  • 举报
回复
引用 7 楼 sheisbawdy 的回复:
把代码贴全才能看出来…

哦哦

bool isComplete = false;
int fwq = 0;
do
{
Stopwatch watcher = new Stopwatch(); //计时器
Thread td = new Thread(() =>
{
html = webClient.Load(url); isComplete = true;
});
td.Start();
watcher.Start();
while (watcher.ElapsedMilliseconds < 5000 && isComplete == false) { Thread.Sleep(100); }
watcher.Stop();
try { if (td != null && td.IsAlive) { td.Abort(); } }
catch
{
do { Thread.Sleep(100); }
while (td != null);
if (fwq < 3){ fwq++;} else { break; }
}

} while (isComplete == false);

全部代码就是这些了,有没有写错的地方啊
月下YXSoft 2019-05-13
  • 打赏
  • 举报
回复
把代码贴全才能看出来…
  • 打赏
  • 举报
回复
谢谢!try里面有语句的

try{td.abort();} //td是try前面的线程
catch{break;}


每次都报异常可还是一直在循环
h32141 2019-05-13
  • 打赏
  • 举报
回复
try 里面有错误了之后才会走catch里 你写的代码try里什么都没有 系统默认跳过 然后就无限循环
残訫々 2019-05-12
  • 打赏
  • 举报
回复
引用 2 楼 推倒小十六再说的回复:

吓了兔子一大跳哈哈哈
奇怪啊我还是搞不清楚错哪了
try中没有东西,也就没有错误,就不会执行catch,就是一个死循环了啊
月下YXSoft 2019-05-11
  • 打赏
  • 举报
回复
try里都没语句,肯定不会执行到catch里,只有try里的语句报错了,才会执行catch里的代码
  • 打赏
  • 举报
回复

吓了兔子一大跳哈哈哈
奇怪啊我还是搞不清楚错哪了
吹风的兔子 2019-05-11
  • 打赏
  • 举报
回复 1
吓我一大跳,亲自测试了一下,是楼主自己的代码有问题。 跟 catch 中 break 没有半毛钱关系。 如果你的代码是 TypeScrtipt —— 那么: catch { } 必须写成 catch(e) { }

111,097

社区成员

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

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

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