簡體   English   中英

C#捕獲異常

[英]C# Catching exception

對此我很陌生,所以請幫忙。 我有以下圖片點擊代碼。 但是,如果用戶未單擊圖像,則會發生錯誤。 如何進行錯誤檢查以捕獲如果用戶未單擊圖像並嘗試繼續,將顯示消息框通知他單擊圖像。

錯誤消息:錯誤位於“ListViewItem selectedItem = listView1.SelectedItems [0]錯誤消息:無效參數=值'0'對'索引無效

以下是我的代碼:

private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    int i = e.ProgressPercentage;
    object fbUserObject = e.UserState;
    if (fbUserObject is DataRow)
    {
        var fbUser = fbUserObject as DataRow;
        var item = new ListViewItem(fbUser["friend_name"].ToString());
        item.Tag = fbUser["friend_id"];
        item.ImageIndex = i;
        listView1.Items.Add(item);
    }
    else if (fbUserObject is Image)
    {
        imageList.Images.Add(fbUserObject as Image);
    }  
}

private void imageClicked(Object sender, System.EventArgs e)
{
    ListViewItem selectedItem = listView1.SelectedItems[0];
    selectedFBId = selectedItem.Tag as string;
    selectedFBName = selectedItem.Text;

    DialogResult dialogA = MessageBox.Show("Analyse employee data?", "SOC", MessageBoxButtons.YesNo);
    if (dialogA == DialogResult.Yes)
    {
        TargetEmployee.Text = "Selected Target: " + selectedFBName;
        pf.Show();
        ThreadPool.QueueUserWorkItem(LoadUserDetails);
    }
}

您不應該捕獲異常,您應該在沒有任何選定項目時進行處理

if(listView1.SelectedItems.Count == 0)
{
 MessageBox.Show(this, "No image");
return;
}

當你不希望發生某些事情時應該抓住例外,如果你知道可能的問題,你應該在它成為一個問題之前處理它

像這樣改變你的代碼

 private void imageClicked(Object sender, System.EventArgs e)
    {
        if(listView1.SelectedItems.Count < 1)
                return;
        ListViewItem selectedItem = listView1.SelectedItems[0];
        selectedFBId = selectedItem.Tag as string;
        selectedFBName = selectedItem.Text;

        DialogResult dialogA = MessageBox.Show("Analyse employee data?", "SOC", MessageBoxButtons.YesNo);
        if (dialogA == DialogResult.Yes)
        {
            TargetEmployee.Text = "Selected Target: " + selectedFBName;
            pf.Show();
            ThreadPool.QueueUserWorkItem(LoadUserDetails);
        }
    }

您可以使用try { } catch { }語句進行錯誤處理。

找到生成異常的代碼行后,可以將其包裝到這樣的塊中

try
{
   int a = int.Parse("pedantic"); // This throws an error because you cannot convert
}
catch (Exception e)
{
   // Handle your error here instead of crashing your program
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM