首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# FormatException「輸入字串格式不正確」:空字串轉換整數導致的經典坑

     編輯:程式設計綜合問答

程式碼嘗試將變數 score(初始為空字串 "")轉換為 int,拋出 System.FormatException。

錯誤程式碼

string score = "";
// ... 未賦值直接轉換
int a = Convert.ToInt16(score); // 拋出異常

根因

Convert.ToInt16("")、int.Parse("") 皆會拋出 FormatException,因為空字串非有效數字格式。

修正方案

  1. 預設值: string score = "0"; 或宣告時給預設值。
  2. 防禦性檢查:
    if (string.IsNullOrEmpty(score)) score = "0";
    int a = int.TryParse(score, out int result) ? result : 0;
    
  3. 資料庫層面: 確保欄位預設值或 NOT NULL 約束,避免讀取到 NULL/空字串。

最佳實踐

  • 優先使用 int.TryParse 避免例外開銷。
  • 輸入來源(表單、查詢字串、資料庫)皆應驗證非空再轉型。
  • 日誌記錄異常時包含原始字串內容,利於排查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved