回答
似乎是一個不錯的主意,但無論如何嘗試這樣的事:
bool exceptionthrown = false;
while (!exceptionthrown)
{
try
{
// Do magic here
}
catch (Exception)
{
exceptionthrown = true;
throw;
}
}
如果拋出異常,此代碼不會返回循環。實際上添加的代碼實際上什麼都沒有。 – lockstock 2012-03-13 04:43:06
這對我來說是不好的設計的氣味。一般規則是:例外應該而不是用於流量控制。有許多的原因;即通常有更好/更可靠的方法可用於在拋出異常之前進行檢查,並且還會降低效率。
然而,只是爲了討論的方便,你可以這樣做以下:
while (true)
{
try
{
// do stuff here
}
catch (MyException)
{
continue;
}
// all is good
break;
}
再次 - 這是不的推薦方式。如果你能提供更多的上下文/例子,我會很樂意提供一些更好的建議。例如:
我可以想到在某些情況下,這不是天生不好的設計(例如,在超時異常時重試片狀網絡操作),但不是很多。 – 2009-10-25 07:05:42
也許系統基於數據庫響應,您必須等待它,直到它工作! – 2015-08-15 02:49:39
這比實際接受的答案要好得多 – derekantrican 2017-06-30 01:54:52
這真的取決於你在做什麼以及拋出異常的類型。許多異常並不是通過再次使用完全相同的輸入/數據來解決的,因此循環只會持續生成異常。
相反,您應該檢查相關的異常,然後以適當的方式處理這些異常。
爲什麼不調用實際執行循環的函數,並在函數之後再次調用該函數。
private void loop() {
for(...) {
}
}
一些其他的方法:
try {
loop();
} catch(Exception e) {
loop();
}
如果在第二次通過時再次拋出異常,則會出現問題。 – RandomGuy 2010-09-14 22:05:24
喜歡的東西:
bool done = false;
while(! done)
{
try
{
DoSomething();
done = true;
} catch(Exception ex)
{
HandleException(ex);
}
}
正如Noldorin說,它聞起來像一個糟糕的設計。您正在使用異常來控制程序的流程。最好對導致您重複操作的條件進行明確檢查。
什麼下面,您可以設置重試次數:
int tryCount = 0;
while (tryCount < 3)
{
try
{
someReturn = SomeFunction(someParams);
}
catch (Exception)
{
tryCount++;
continue;
}
break;
}
- 1. C#我應該在for循環之外放置Sql/OleDb transaction.Commit()嗎?
- 2. C# - 循環foreach直到真
- 3. getJSON循環直到響應
- 4. C++做while循環沒有響應
- 5. C#的例外循環消息框
- 6. 我的循環沒有循環
- 7. 爲什麼我的while循環沒有被檢查,直到它一直運行?
- 8. C++ - 仰視沒有循環
- 9. 我沒有得到while循環執行
- 10. 我的for循環沒有得到值
- 11. 我的循環沒有得到執行
- 12. 循環直到(py)
- 13. C#While循環,直到按鈕點擊
- 14. C# - 循環輸入直到EOF
- 15. C程序沒有進入循環,但執行所有的事情直到它
- 16. 循環參考例外
- 17. 例外異步循環
- 18. Javascript while循環沒有改變任何東西,直到循環完成
- 19. 繼續等待循環增量,直到沒有得到函數響應
- 20. 無法退出下一個循環直到循環直到
- 21. 創建一個無限循環,但在C上有個例外
- 22. for循環 - 循環超過其應該?
- 23. For循環停止我的揮杆應用程序,直到循環完成
- 24. 例外,當沒有找到
- 25. 我應該預計哪個例外
- 26. 爲什麼我的Java for循環沒有在循環外設置變量?
- 27. 循環直到數組有數據
- 28. 做...循環直到有多個條件
- 29. 沒有循環
- 30. C++中,直到沒有更多的輸入使用while循環時輸入
這不是我清楚你的意思。你爲什麼不張貼一些代碼,說出你想要的結果,以及實際發生的事情。 – RossFabricant 2009-10-24 23:48:35
我想知道計劃是否要循環,如果有異常,那麼跳過問題對象並繼續循環,但這只是一個猜測。 – 2009-10-25 00:02:19