C#捕获异常
本文关键字:捕获异常 | 更新日期: 2023-09-27 18:24:08
我对此很陌生,所以请帮忙。我有下面的图片点击代码。但是,如果用户没有单击图像,则会发生错误。我如何进行错误检查,以发现如果用户没有点击图像并试图继续,则会显示一个消息框,通知他点击图像。
错误消息:错误位于"ListViewItem selectedItem=listView1.SelectedItems[0]错误消息:无效参数="0"的值对"index "无效
以下是我的代码:
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
}