private void btngetage_Click(object sender, EventArgs e)
{
try
{
string a = txtAge.Text;
DateTime bday = new DateTime(int.Parse(txtbday.Text));
DateTime today = DateTime.Today;
int age = today.Year - bday.Year;
if (bday > today.AddYears(-age))
age--;
txtAge.Text = age.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
-8
A
回答
0
,而不是這個
DateTime bday = new DateTime(int.Parse(txtbday.Text));
你應該這樣做,但它是所有我可以從你的問題得到。
DateTime bday;
if(DateTime.TryParse(txtbday.Text.Trim(),out bday))
{
//your rest of code
}
注:文本框控制應該用於拍攝文本輸入。對於日期時間輸入,將控件更改爲日期時間選擇器。你不必做任何解析。
1
您試圖解析這裏無效整數
int.Parse(txtbday.Text)
嘗試使用此代替
DateTime.Parse(txtbday.Text)
要防止異常,最好使用DateTime.TryParse
方法:
DateTime bday;
if (DateTime.TryParse(txtbday.Text, out bday))
{
int age = today.Year - bday.Year;
if (bday > today.AddYears(-age))
age--;
txtAge.Text = age.ToString();
}
4
當你做這樣的事情時,
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
你使自己的調試更加困難。現在,不是停止在包含錯誤的行上,調試器根本不會停止。它只是顯示你的消息框並繼續前進,因爲你已經處理了錯誤。
不要使用catch塊來捕獲您期望並將要處理的異常。作爲一個必然結果,從來沒有趕上基類Exception
類,因爲它有很多子類,你將永遠無法處理(如OutOfMemoryException
)。始終捕捉特定的派生異常。
或者根本沒有發現任何異常。有一個全局的未處理異常處理程序,您可以根據需要使用它。默認情況下,它將顯示一條警報,其中包含有關該異常的信息。 (基本上是上面的代碼呢,同樣的事情,除了要好得多。)
一旦你採取的是不值錢的catch塊了,調試器將停止在這一行:
DateTime bday = new DateTime(int.Parse(txtbday.Text));
它會告訴你int.Parse
方法拋出一個異常,它是哪種類型的異常。您將瞭解到輸入(txtbday.Text
)不是有效整數,因此無法轉換爲整數。
您可以通過獲取FormatException
並處理錯誤來解決此問題,但沒有理由這樣做,因爲有一個TryParse
提供的方法不會拋出任何異常。相反,它會返回一個表示成功或失敗的布爾值。用if語句測試一下。如果無法解析字符串,請使用ErrorProvider
組件以用戶輸入的字符串警告用戶問題。
相關問題
- 1. 如何調試一個SSRS錯誤 - 「輸入字符串的格式不正確」
- 2. 如何解決「輸入字符串格式不正確」。錯誤?
- 3. 輸入字符串格式不正確
- 4. 「輸入字符串的不正確的格式」的錯誤
- 5. 輸入字符串格式不正確。
- 6. 輸入字符串格式不正確
- 7. 輸入字符串的不正確的格式錯誤
- 8. C#錯誤:輸入字符串的不正確的格式
- 9. 輸入字符串的不正確的格式錯誤
- 10. 奇怪的錯誤(輸入的字符串格式不正確。)
- 11. C++錯誤:「輸入字符串的不正確的格式」
- 12. 輸入字符串格式不正確
- 13. 輸入字符串格式不正確
- 14. 「輸入字符串格式不正確」
- 15. 輸入字符串格式不正確
- 16. 輸入字符串格式不正確
- 17. 輸入字符串格式不正確
- 18. 輸入字符串格式不正確
- 19. 輸入字符串格式不正確
- 20. 「輸入字符串格式不正確。」
- 21. 輸入字符串格式不正確
- 22. 輸入字符串格式不正確
- 23. iTextSharp輸入字符串的格式不正確css錯誤
- 24. 錯誤說輸入字符串的格式不正確
- 25. 錯誤輸入字符串的格式不正確
- 26. 輸入字符串錯誤的格式不正確
- 27. 輸入字符串的格式錯誤不正確。
- 28. '輸入的字符串格式不正確'錯誤
- 29. 輸入字符串錯誤的格式不正確
- 30. 輸入字符串格式不正確?
檢查'txtbday.Text'的值。 –
爲什麼地球上你首先解析爲「int」? –
'txtbday的值是多少?Text'?這是你的意圖嗎?由於*確切*輸入,你期望什麼結果? – abelenky