2013-07-22 13 views
2

아주 새로운 것이므로 도움을주십시오. 다음 이미지 클릭 코드가 있습니다. 그러나 사용자가 이미지를 클릭하지 않으면 오류가 발생합니다. 사용자가 이미지를 클릭하지 않고 진행하려고 시도 할 때 메시지 상자에 이미지를 클릭하라는 메시지가 표시된다는 오류 확인을 어떻게 할 수 있습니까?C# 예외 캐치 예외

오류 MSG : 오류가에있다 "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); 
    } 
} 
+1

예외는 어디에서 발생합니까? LoadUserDetails의 구현에서? – RQDQ

+9

예외를 잡을 필요가 없으면 항목이 null 일 때 처리해야합니다 – Sayse

+0

어떤 줄에서 오류가 발생합니까? – Ehsan

답변

3
처럼 코드를 변경

선택한 항목

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

예외가 캐치해야 당신이 돈이없는 경우는 예외를 잡을 안

+0

오류는 "ListViewItem selectedItem = listView1.SelectedItems [0] 오류 메시지 : 잘못된 인수 = '0'의 값이 ' –

+0

에 유효하지 않습니다. @SamuelLee 위 코드에서 언급 한 것처럼 체크를 적용해야합니다. (listView1.SelectedItems.Count <1) return; – Ehsan

+0

작동합니다. 감사합니다. 반환 값은 실제로 무엇입니까? –

1

당신은 당신의 오류 처리에 대한 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 
} 
+3

컴파일도하지 않습니다 ("0으로 나누기") – Sayse

+0

@Sayse 그는 방금 예외 처리 방법에 대한 예제를 제공했습니다. 그리고 그는 그 점을 또한 언급했다. – Ehsan

+0

@EhsanUllah - 나는 까다 롭다. 일반적으로 예제는 OP가 필요하다면 시도 할 수 있도록 컴파일해야한다. 만약 내가 좀 까다 롭다면 'Exception'을 잡는 것에 대해 말하고 싶지만 SLC가 시도하는 것을 볼 수있다. 할 것. 나는 왜 내 의견이 정확하다고 생각하지 않는지에 대해서도 언급했다. – Sayse

4

, 당신은 처리해야

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); 
     } 
    } 
어떤 일이 일어날 것을 기대합니다. 가능한 문제를 알고 있다면 문제가되기 전에 처리해야합니다.

+0

(귀하의 방법을 끝내고 돌아가십시오) – Sayse

+0

도움 주셔서 감사합니다.;) –