• 0

c# try - catch problem


Question

Hello,

I'm using c# .net. My program contains a for loop and inside it I use try and catch, this way:

for(int i = 0; i< 5; i++)
{
try
{
// first command
}
catch
{
}
try
{
// second command
}
catch
{
}
}

The problem is that when the computer gets to the 1st catch, it does the 1st command but it doesn't continue to the 2nd :( I want it to continue normally even though it gets to the catch. Can I do it? How ?

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

I think the way you have things set up is a bit sloppy. Can you change it so its more like?

for(int i = 0; i< 5; i++)

{

try

{

// first command

// second command

}

catch(first command's type of Exception)

{

}

catch(second command's type of Exception)

{

}

}

The thing is tho, if first command always throws an exception, second command will never get called. You should check the conditions of command 1 (null pointer, etc) before its called, that way it doesnt throw an exception. Anyway, i dont know if all this was a help or not... :happy:

Link to comment
Share on other sites

  • 0

Wait, what's the problem? I just tried this code:

? ? ? ? ? ?for (int i = 0; i &lt; 5; ++i)
 ? ? ? ? ? ?{
 ? ? ? ? ? ? ? ?try
 ? ? ? ? ? ? ? ?{
 ? ? ? ? ? ? ? ? ? ?Console.WriteLine("BLAH!");
 ? ? ? ? ? ? ? ?}
 ? ? ? ? ? ? ? ?catch { }

 ? ? ? ? ? ? ? ?try
 ? ? ? ? ? ? ? ?{
 ? ? ? ? ? ? ? ? ? ?Console.WriteLine("BLAH 2!");
 ? ? ? ? ? ? ? ?}
 ? ? ? ? ? ? ? ?catch { }
 ? ? ? ? ? ?}

It wrote

Blah!

Blah 2!

5 times.

Are you having a problem with the first try throws an exception? I'm going to try that out right now...

Edit: tried this code:

           for (int i = 0; i &lt; 5; ++i)
            {
                try
                {
                    throw new Exception("This try block is pointless!");
                }
                catch { }

                try
                {
                    Console.WriteLine("BLAH 2!");
                }
                catch { }
       :Dbsp;    }

Also worked fine.

What was your problem again? :D

Link to comment
Share on other sites

  • 0

Thanks for all of your replies :) :laugh: I really appreciate this.

@Sn1p3t - I can't believe it worked for you :o Can you try it with a foreach? I think I did it with a foreach loop, this way:

foreach(string str in Sarray)
{
try
{
// first command
}
catch
{
}
try
{
// second command
}
catch
{
}
}

I don't want to put all commands in one try because if there's a problem with the first command, the other won't work. Maybe it happens because I have 2 try commands ? Like this:

try
{
foreach(string str in Sarray)
{
try
{
// first command
}
catch
{
}
try
{
// second command
}
catch
{
}
}
}
catch
{
}

Link to comment
Share on other sites

  • 0

are you looking for a

try

{}

catch

{}

finally

{}

? that way, anything in the finally gets done, regardless of exception or not.

Link to comment
Share on other sites

  • 0
:o Can you try it with a foreach? I think I did it with a foreach loop, this way:

The actual exceptions that you're getting (and the code that is throwing them) is likely to be much more important than the type of loop that it's going through. Why don't you post the actual code that you're trying to make work?

Link to comment
Share on other sites

  • 0
The actual exceptions that you're getting (and the code that is throwing them) is likely to be much more important than the type of loop that it's going through. Why don't you post the actual code that you're trying to make work?

It is too complicated. And it is actually a plugin for another software so you won't understand it well. I don't want to use a finally because I have a lot of try and catch. Nevermind. It isn't that important. Thanks for your help anyway :)

Here it is, if you understand it:

private void UNAC()
 ?{
 ? ?
 ?m_output.Clear();
 ?	DesktopSidebar.IListRow rowTitle = m_output.AddRow();
 ?	rowTitle.SetTextSkin(sm.Name2Id("Bold"));
 ?	rowTitle.SetText("Network Adapters");
 ?	rowTitle.SetUserData(0,0);
 ?	rowTitle.SetUserData(1,0);
 ?	rowTitle.SetUserData(2,0);
 ?	
 ? ?iie4 =0;
 ? ?foreach (string temper in NA)
 ? ?{
 ? ?	try
 ? ?	{
 ? ?	if (temper.Length&gt;0)
 ? ?	{
 ? ? ?iie4=iie4+1;
 ? ?	}
 ? ?	}
 ? ?	catch
 ? ?	{
 ? ?	}
 ? ?	
 ? ?}
 ? ?
 ?	for (int t=0;t&lt;iie4;t++)
 ?	{
 ? ?	try
 ? ?	{
 ? ?string capp;
 ? ?capp=this.NA[t];
 ? ? ?
 ? ? ?string query = "SELECT * FROM Win32_NetworkAdapterConfiguration";
 ?	ManagementObjectSearcher moSearch = new ManagementObjectSearcher(query);
 ?	if (moSearch != null)
 ?	{
 ? ?ManagementObjectCollection moCollection = moSearch.Get();

 ? ?if (moCollection != null)
 ? ?{
 ? ?foreach(ManagementObject mo in moCollection)
 ? ? ?{
 ? ?	if (mo["Caption"].ToString()==capp)
 ? ?	{
 ? ? ?
 ? ?	if(CCAP==true)
 ? ?	{
 ? ? ? ? ?DesktopSidebar.IListRow row3 = m_output.AddRow(); ? ?
 ? ? ? ? ?	try
 ? ? ? ? ?	{
 ? ?	int CL = mo["Caption"].ToString().IndexOf("]");
 ? ? ? ?string CAPF = mo["Caption"].ToString().Remove(0,CL+2);
 ? ? ? ? ? string CAPFF = mo["Caption"].ToString().Trim(CAPF.ToCharArray());
 ? ?	if(VCAP==false)
 ? ?	{
 ? ?	row3.SetText(CAP + CAPF + " ?" + CAPFF);
 ? ? ?row3.SetUserData(1,2);
 ? ?	}
 ? ?	else
 ? ?	{
 ? ?	row3.SetText(CAP +"\n"+ CAPF + " ?" + CAPFF);
 ? ?	row3.SetUserData(1,2);
 ? ?	}
 ? ? ?	row3.SetUserData(0,0); ? ?
 ? ? ? ?row3.SetUserData(2,0); ? ?
 ? ?	}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	row3.SetText(CAP + "N/A");
 ? ? ? ? ? ? ?row3.SetUserData(1,0);
 ? ? ? ? ? ?row3.SetUserData(0,0); ? ?
 ? ? ? ?row3.SetUserData(2,0);	
 ? ? ? ? ?}
 ? ? ? ? ?}
 ? ? ? ? ?
 ? ?	
 ? ? ?if (CNAIP==true)
 ? ?	{
 ? ? ? ?	}
 ? ? ? ? ?	try
 ? ? ? ? ?	{	
 ? ? ? ? ?bool isfir = false;
 ? ? ?	string[] ips = (string[])mo["IPAddress"];
 ? ? ?	if (ips != null)
 ? ? ?	{
 ? ? ? ? ? ?	naipud = 50;
 ? ? ? ?foreach(string ip2 in ips)
 ? ? ? ?{
 ? ? ? ? ?DesktopSidebar.IListRow row10 = m_output.AddRow();
 ? ? ? ?if(VNAIP==false)
 ? ? ? ?{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ?	{
 ? ? ? ?	isfir=false;
 ? ? ? ?	row10.SetText(NAIP + ip2);
 ? ? ? ? ?row10.SetUserData(0,naipud);
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ? ?	row10.SetText(ip2);
 ? ? ? ? ? ? ?	row10.SetUserData(0,naipud);
 ? ? ? ?	}
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ? ?{
 ? ? ? ? ?	isfir=false;
 ? ? ? ? ?	row10.SetText(NAIP +"\n"+ ip2);
 ? ? ? ? ?	row10.SetUserData(0,naipud);
 ? ? ? ? ?}
 ? ? ? ? ? ?else
 ? ? ? ? ? ?{
 ? ? ? ? ? ?	row10.SetText(ip2);
 ? ? ? ? ? ?row10.SetUserData(0,naipud);
 ? ? ? ? ? ?}
 ? ? ? ?	}
 ? ? ? ? ? ? ?row10.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row10.SetUserData(2,0);
 ? ? ? ?	naipud += 1;
 ? ? ? ?}
 ? ? ?	}
 ? ? ?	else
 ? ? ?	{
 ? ? ? ?DesktopSidebar.IListRow row10 = m_output.AddRow();

 ? ? ? ? ?row10.SetText(NAIP+"N/A");
 ? ? ? ? ?row10.SetUserData(0,0);
 ? ? ? ? ? ? row10.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row10.SetUserData(2,0);
 ? ? ? ?}
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	DesktopSidebar.IListRow row10 = m_output.AddRow();

 ? ? ? ? ?row10.SetText(NAIP+"N/A");
 ? ? ? ? ?row10.SetUserData(0,0);
 ? ? ? ? ? ?row10.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row10.SetUserData(2,0);
 ? ? ? ? ?}
 ? ? ? ? ?}
 ? ?	
 ? ? ?if(CPHIP==true)
 ? ? ? {
 ? ? ? ?DesktopSidebar.IListRow row7 = m_output.AddRow();
 ? ? ? ?try
 ? ? ? ?{

 ? ? ?if(VPHIP==false)
 ? ? ?{
 ? ?	row7.SetText(PHIP + mo["MACAddress"]);
 ? ? ?row7.SetUserData(1,3);
 ? ?	}
 ? ? ?else
 ? ? ?{
 ? ? ? ? ? ? ?row7.SetText(PHIP +"\n"+ mo["MACAddress"]);
 ? ? ? ?row7.SetUserData(1,3);
 ? ? ?	}
 ? ? ? ? ?	row7.SetUserData(0,0); ? ?
 ? ? ? ?row7.SetUserData(2,0);	
 ? ? ? ?}
 ? ? ? ? ?catch 
 ? ? ? ?{
 ? ? ? ?	row7.SetText(PHIP + "N/A");
 ? ? ? row7.SetUserData(1,0);
 ? ? ? ? ?	row7.SetUserData(0,0); ? ?
 ? ? ? ?row7.SetUserData(2,0);	
 ? ? ? ?}
 ? ? ?
 ? ?	}
 ? ?	
 ? ? ? ? ? ? if(CHN==true)
 ? ? ? {
 ? ? ?DesktopSidebar.IListRow row4 = m_output.AddRow();
 ? ? ? ? ?try
 ? ? ? ? ?{
 ? ? ?if(VHN==false)
 ? ? ?{
 ? ?	row4.SetText(HN + mo["DNSHostName"]);
 ? ?	row4.SetUserData(1,4);
 ? ?	}
 ? ? ?else
 ? ? ?{
 ? ? ? ? ? ? ?row4.SetText(HN +"\n"+ mo["DNSHostName"]);
 ? ? ? ?row4.SetUserData(1,4);
 ? ? ?	}
 ? ? ? ? ?	row4.SetUserData(0,0); ? ?
 ? ? ? ?row4.SetUserData(2,0);	
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ? ?row4.SetText(HN +"N/A");
 ? ? ? ? ?	row4.SetUserData(1,0);
 ? ? ? ? ?	row4.SetUserData(0,0); ? ?
 ? ? ? ?row4.SetUserData(2,0);
 ? ? ? ? ?}
 ? ?	}
 ? ? ? ?	
 ? ?	if(CDSN==true)
 ? ?	{	
 ? ? ?DesktopSidebar.IListRow row5 = m_output.AddRow();
 ? ? ? ? ?try
 ? ? ? ? ?{
 ? ? ?if(VDSN==false)
 ? ? ?{
 ? ? ?row5.SetText(DSN + mo["Description"]);
 ? ? ? row5.SetUserData(1,5);
 ? ? ?}
 ? ? ?else
 ? ? ?{
 ? ? ? ? ?	row5.SetText(DSN +"\n"+ mo["Description"]);
 ? ? ? ?row5.SetUserData(1,5);
 ? ? ?}
 ? ? ?	row5.SetUserData(0,0); ? ?
 ? ? ? ?row5.SetUserData(2,0);
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	row5.SetText(DSN + "N/A");
 ? ? ? ? ?	row5.SetUserData(1,0);
 ? ? ? ? ?	row5.SetUserData(0,0); ? ?
 ? ? ? ?row5.SetUserData(2,0);
 ? ? ? ? ?}
 ? ?	}
 ? ?	if (CSN==true)
 ? ?	{
 ? ? ? ? ?bool isfir = false;
 ? ? ?DesktopSidebar.IListRow row6 = m_output.AddRow();
 ? ? ?try
 ? ? ? ? ?{
 ? ? ?	string[] subnets = (string[])mo["IPSubnet"];
 ? ? ?	if (subnets != null)
 ? ? ?	{
 ? ? ? ? ? ?snud = 100;
 ? ? ? ?foreach(string ipsubnet in subnets)
 ? ? ? ?{
 ? ? ? ?if(VSN==false)
 ? ? ? ?{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ?	{
 ? ? ? ?	isfir=false;
 ? ? ? ?	row6.SetText(SN + ipsubnet);
 ? ? ? ? ?row6.SetUserData(0,snud);
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ? ?	row6.SetText(ipsubnet);
 ? ? ? ? ? ? ?	row6.SetUserData(0,snud);
 ? ? ? ?	}
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ? ?{
 ? ? ? ? ?	isfir=false;
 ? ? ? ? ?	row6.SetText(SN +"\n"+ ipsubnet);
 ? ? ? ? ?	row6.SetUserData(0,snud);
 ? ? ? ? ?}
 ? ? ? ? ? ?else
 ? ? ? ? ? ?{
 ? ? ? ? ? ?	row6.SetText(ipsubnet);
 ? ? ? ? ? ?row6.SetUserData(0,snud);
 ? ? ? ? ? ?}
 ? ? ? ?	}
 ? ? ? ? ? ? ?row6.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row6.SetUserData(2,0);
 ? ? ? ?	snud += 1;
 ? ? ? ?}
 ? ? ?	}
 ? ? ?	else
 ? ? ?	{
 ? ? ? ?row6 = m_output.AddRow();

 ? ? ? ? ?row6.SetText(SN+"N/A");
 ? ? ? ? ?row6.SetUserData(0,0);
 ? ? ? ? ? ? row6.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row6.SetUserData(2,0);
 ? ? ? ?}
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	row6 = m_output.AddRow();

 ? ? ? ? ?row6.SetText(SN+"N/A");
 ? ? ? ? ?row6.SetUserData(0,0);
 ? ? ? ? ? ?row6.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row6.SetUserData(2,0);
 ? ? ? ? ?}
 ? ?	} ?
 ? ?	if (CDS==true)
 ? ?	{
 ? ? ?bool isfir = true;
 ? ? ? ? ?try
 ? ? ? ? ?{
 ? ? ?	string[] dnss = (string[])mo["DNSServerSearchOrder"];
 ? ? ?	if (dnss != null)
 ? ? ?	{
 ? ? ? ? ? ?dsud = 200;
 ? ? ? ?foreach(string dns in dnss)
 ? ? ? ?{
 ? ? ? ?DesktopSidebar.IListRow rown = m_output.AddRow();
 ? ? ? ?if(VDS==false)
 ? ? ? ?{
 ? ? ? ?	if(isfir==true)
 ? ? ? ?	{
 ? ? ? ?	isfir=false;
 ? ? ? ?	rown.SetText(DS + dns);
 ? ? ? ? ?rown.SetUserData(0,dsud);
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ? ?	rown.SetText(dns);
 ? ? ? ? ? ? ?	rown.SetUserData(0,dsud);
 ? ? ? ?	}
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ? ?{
 ? ? ? ? ?	isfir=false;
 ? ? ? ? ?	rown.SetText(DS +"\n"+ dns);
 ? ? ? ? ?	rown.SetUserData(0,dsud);
 ? ? ? ? ?}
 ? ? ? ? ? ?else
 ? ? ? ? ? ?{
 ? ? ? ? ? ?	rown.SetText(dns);
 ? ? ? ? ? ?rown.SetUserData(0,dsud);
 ? ? ? ? ? ?}
 ? ? ? ?	}
 ? ? ? ? ? ? ?rown.SetUserData(1,0); ? ?
 ? ? ? ? ? ?rown.SetUserData(2,0);
 ? ? ? ?	dsud += 1;
 ? ? ? ?}
 ? ? ?	}
 ? ? ?	else
 ? ? ?	{
 ? ? ? ?DesktopSidebar.IListRow rown = m_output.AddRow();

 ? ? ? ? ?rown.SetText(DS+"N/A");
 ? ? ? ? ?rown.SetUserData(0,0);
 ? ? ? ? ? ? rown.SetUserData(1,0); ? ?
 ? ? ? ? ? ?rown.SetUserData(2,0);
 ? ? ? ?}
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	DesktopSidebar.IListRow rown = m_output.AddRow();

 ? ? ? ? ?rown.SetText(DS+"N/A");
 ? ? ? ? ?rown.SetUserData(0,0);
 ? ? ? ? ? ?rown.SetUserData(1,0); ? ?
 ? ? ? ? ? ?rown.SetUserData(2,0);
 ? ? ? ? ?}
 ? ? ?	}
 ? ? ?	
 ? ? ? ?if(CDOM==true)
 ? ? ? {
 ? ? ?DesktopSidebar.IListRow row9 = m_output.AddRow();
 ? ? ? ?try
 ? ? ? ?{
 ? ? ?if(VDOM==false)
 ? ? ?{
 ? ?	row9.SetText(DOM + mo["DNSDomain"]);
 ? ? ?row9.SetUserData(1,6);
 ? ?	}
 ? ? ?else
 ? ? ?{
 ? ? ? ? ? ? ?row9.SetText(DOM +"\n"+ mo["DNSDomain"]);
 ? ? ? ? ? ?row9.SetUserData(1,6);
 ? ? ?	}
 ? ? ? ? ? ?row9.SetUserData(0,0); ? ?
 ? ? ? ? ? ?row9.SetUserData(2,0);
 ? ? ? ?}
 ? ? ? ?catch
 ? ? ? ?{
 ? ? ? ?	row9.SetText(DOM + "N/A");
 ? ? ?	row9.SetUserData(1,0);
 ? ? ? ? ? ?row9.SetUserData(0,0); ? ?
 ? ? ? ? ? ?row9.SetUserData(2,0);
 ? ? ? ?}
 ? ? ?	
 ? ? ?
 ? ?	}
 ? ?	
 ? ?	
 ? ?	if (CDG==true)
 ? ?	{
 ? ?bool isfir = false;
 ? ? ? ?	try
 ? ? ? ? ?{
 ? ? ? ? ?	
 ? ? ?	string[] defaultgateways = (string[])mo["DefaultIPGateway"];
 ? ? ?	if (defaultgateways != null)
 ? ? ?	{
 ? ? ? ? ? ?dgud = 150;
 ? ? ? ?foreach(string defaultipgateway in defaultgateways)
 ? ? ? ?{
 ? ? ? ?	DesktopSidebar.IListRow row8 = m_output.AddRow();
 ? ? ? ?if(VDG==false)
 ? ? ? ?{
 ? ? ? ?	if(isfir==true)
 ? ? ? ?	{
 ? ? ? ?	isfir=false;
 ? ? ? ?	row8.SetText(DG + defaultipgateway);
 ? ? ? ? ?row8.SetUserData(0,dgud);
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ? ?	row8.SetText(defaultipgateway);
 ? ? ? ? ? ? ?	row8.SetUserData(0,snud);
 ? ? ? ?	}
 ? ? ? ?	}
 ? ? ? ?	else
 ? ? ? ?	{
 ? ? ? ? ?if(isfir==true)
 ? ? ? ? ?{
 ? ? ? ? ?	isfir=false;
 ? ? ? ? ?	row8.SetText(SN +"\n"+ defaultipgateway);
 ? ? ? ? ?	row8.SetUserData(0,snud);
 ? ? ? ? ?}
 ? ? ? ? ? ?else
 ? ? ? ? ? ?{
 ? ? ? ? ? ?	row8.SetText(defaultipgateway);
 ? ? ? ? ? ?row8.SetUserData(0,snud);
 ? ? ? ? ? ?}
 ? ? ? ?	}
 ? ? ? ? ? ? ?row8.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row8.SetUserData(2,0);
 ? ? ? ?	snud += 1;
 ? ? ? ?}
 ? ? ?	}
 ? ? ?	else
 ? ? ?	{
 ? ? ? ?DesktopSidebar.IListRow row8 = m_output.AddRow();

 ? ? ? ? ?row8.SetText(SN+"N/A");
 ? ? ? ? ?row8.SetUserData(0,0);
 ? ? ? ? ? ? row8.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row8.SetUserData(2,0);
 ? ? ? ?}
 ? ? ? ? ?}
 ? ? ? ? ?catch
 ? ? ? ? ?{
 ? ? ? ? ?	DesktopSidebar.IListRow row8 = m_output.AddRow();

 ? ? ? ? ?row8.SetText(SN+"N/A");
 ? ? ? ? ?row8.SetUserData(0,0);
 ? ? ? ? ? ?row8.SetUserData(1,0); ? ?
 ? ? ? ? ? ?row8.SetUserData(2,0);
 ? ? ?	
 ? ? ?
 ? ? ?}	
 ? ? ? ?}
 ? ? ?	}
 ? ? ?}
 ? ?	}
 ? ?}
 ? ?catch
 ? ?{
 ? ?	
 ? ?}
 ? ?if(iie4 != 1)
 ? ?{
 ? ?	DesktopSidebar.IListRow rows = m_output.AddRow();
 ? ?rows.SetUserData(0,0);
 ? ?rows.SetUserData(1,0);
 ? ?rows.SetUserData(2,0);
 ? ?}
 ? ?}
 ? ? ? m_panelParent.ArrangePanels();
 ?	}
 ? ?

Edited by yyy
Link to comment
Share on other sites

  • 0

Is there anyway to make your program more defensive and thereby not rely so heavily on having so many catch blocks? Oh, and that's one huge monolithic method. Try cutting it up some. I know that's not the point of this thread, but I think it'll help you lots.

Link to comment
Share on other sites

  • 0
Is there anyway to make your program more defensive and thereby not rely so heavily on having so many catch blocks? Oh, and that's one huge monolithic method. Try cutting it up some. I know that's not the point of this thread, but I think it'll help you lots.

Thanks for your reply :) I really appreciate this.

I think will use that code anyway. I just hope that there won't be many reasons to use those catches :D Thanks anyway :) My biggest problem now is how to get the external ip. I've searched all of the Internet but nothing helped me :blink:

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.