PDA

View Full Version : ارور دادن با try catch



silverfox
شنبه 21 شهریور 1388, 20:55 عصر
من یه برنامه ساده برای یکی از دوستام نوشتم که میاد کد های mRNA رو می گیره اسم کاملش رو می ده یعنی یه ورودی می گیره(رشته)بعد 3تا 3تا جدا می کنه هر 3تا یه معنی داره ترجمه اش می کنه با switch نوشتم اینو...حالا بعضی 3حرفی ها معنی ندارن یعنی مثلا ssd رو اگه وسط رشته باشه ترجمه نمی کنه و جاش رو خالی میذاری ولی اگه توی کل رشته هیچ کدوم از ورودی ها صحیح نباشن ارور میده و از برنامه میاد بیرون در صورتی که هم توی switchم default دارم و هم از try catch استفاده کردم دوستان یه نگاه میندازن ببینن مشکل از کجاس؟


using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Zist
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.SelectedItem = "Complete names";
}
public void convertEngineComplete(string inputStr)
{
try
{
switch (inputStr)
{
case "uuu":
textBox2.Text += "Phenylalanine-";
break;
case "uuc":
textBox2.Text += "Phenylalanine-";
break;
case "uua":
textBox2.Text += "Leucine-";
break;
case "uug":
textBox2.Text += "Leucine-";
break;
case "cuu":
textBox2.Text += "Leucine-";
break;
case "cuc":
textBox2.Text += "Leucine-";
break;
case "cua":
textBox2.Text += "Leucine-";
break;
case "cug":
textBox2.Text += "Leucine-";
break;
case "auu":
textBox2.Text += "Isoleucine-";
break;
case "auc":
textBox2.Text += "Isoleucine-";
break;
case "aua":
textBox2.Text += "Isoleucine-";
break;
case "aug":
textBox2.Text += "*Methionine-";
break;
case "guu":
textBox2.Text += "Valine-";
break;
case "guc":
textBox2.Text += "*Valine-";
break;
case "gua":
textBox2.Text += "Valine-";
break;
case "gug":
textBox2.Text += "Valine-";
break;
case "ucu":
textBox2.Text += "Serine-";
break;
case "ucc":
textBox2.Text += "Serine-";
break;
case "uca":
textBox2.Text += "Serine-";
break;
case "ucg":
textBox2.Text += "Serine-";
break;
case "ccu":
textBox2.Text += "Proline-";
break;
case "ccc":
textBox2.Text += "Proline-";
break;
case "cca":
textBox2.Text += "Proline-";
break;
case "ccg":
textBox2.Text += "Proline-";
break;
case "acu":
textBox2.Text += "Threonine-";
break;
case "acc":
textBox2.Text += "Threonine-";
break;
case "aca":
textBox2.Text += "Threonine-";
break;
case "acg":
textBox2.Text += "Threonine-";
break;
case "gcu":
textBox2.Text += "Alanine-";
break;
case "gcc":
textBox2.Text += "Alanine-";
break;
case "gca":
textBox2.Text += "Alanine-";
break;
case "gcg":
textBox2.Text += "Alanine-";
break;
case "uau":
textBox2.Text += "Tyrosine-";
break;
case "uac":
textBox2.Text += "Tyrosine-";
break;
case "uaa":
textBox2.Text += "|-";
break;
case "uag":
textBox2.Text += "|-";
break;
case "cau":
textBox2.Text += "Histidine-";
break;
case "cac":
textBox2.Text += "Histidine-";
break;
case "caa":
textBox2.Text += "Glutamine-";
break;
case "cag":
textBox2.Text += "Glutamine-";
break;
case "aau":
textBox2.Text += "Asparagine-";
break;
case "aac":
textBox2.Text += "Asparagine-";
break;
case "aaa":
textBox2.Text += "Lysine-";
break;
case "aag":
textBox2.Text += "Lysine-";
break;
case "gaa":
textBox2.Text += "Glutamic acid-";
break;
case "gag":
textBox2.Text += "Glutamic acid-";
break;
case "ugu":
textBox2.Text += "Cysteine-";
break;
case "ugc":
textBox2.Text += "Cysteine-";
break;
case "uga":
textBox2.Text += "|-";
break;
case "ugg":
textBox2.Text += "Tryptophan-";
break;
case "cgu":
textBox2.Text += "Arginine-";
break;
case "cgc":
textBox2.Text += "Arginine-";
break;
case "cga":
textBox2.Text += "Arginine-";
break;
case "cgg":
textBox2.Text += "Arginine-";
break;
case "agu":
textBox2.Text += "Serine-";
break;
case "agc":
textBox2.Text += "Serine-";
break;
case "aga":
textBox2.Text += "Arginine-";
break;
case "agg":
textBox2.Text += "Arginine-";
break;
case "ggu":
textBox2.Text += "Glycine-";
break;
case "ggc":
textBox2.Text += "Glycine-";
break;
case "gga":
textBox2.Text += "Glycine-";
break;
case "ggg":
textBox2.Text += "Glycine-";
break;
default:
break;
}
}
catch
{
MessageBox.Show("Invalid input!","Error");
textBox2.Text = "";
}
}
public void convertEngineShort(string inputStr)
{
try
{
switch (inputStr)
{
case "uuu":
textBox2.Text += "Phe-";
break;
case "uuc":
textBox2.Text += "Phe-";
break;
case "uua":
textBox2.Text += "Leu-";
break;
case "uug":
textBox2.Text += "Leu-";
break;
case "cuu":
textBox2.Text += "Leu-";
break;
case "cuc":
textBox2.Text += "Leu-";
break;
case "cua":
textBox2.Text += "Leu-";
break;
case "cug":
textBox2.Text += "Leu-";
break;
case "auu":
textBox2.Text += "Ile-";
break;
case "auc":
textBox2.Text += "Ile-";
break;
case "aua":
textBox2.Text += "Ile-";
break;
case "aug":
textBox2.Text += "*Met-";
break;
case "guu":
textBox2.Text += "Val-";
break;
case "guc":
textBox2.Text += "*Val-";
break;
case "gua":
textBox2.Text += "Val-";
break;
case "gug":
textBox2.Text += "Val-";
break;
case "ucu":
textBox2.Text += "Ser-";
break;
case "ucc":
textBox2.Text += "Ser-";
break;
case "uca":
textBox2.Text += "Ser-";
break;
case "ucg":
textBox2.Text += "Ser-";
break;
case "ccu":
textBox2.Text += "Pro-";
break;
case "ccc":
textBox2.Text += "Pro-";
break;
case "cca":
textBox2.Text += "Pro-";
break;
case "ccg":
textBox2.Text += "Pro-";
break;
case "acu":
textBox2.Text += "Thr-";
break;
case "acc":
textBox2.Text += "Thr-";
break;
case "aca":
textBox2.Text += "Thr-";
break;
case "acg":
textBox2.Text += "Thr-";
break;
case "gcu":
textBox2.Text += "Ala-";
break;
case "gcc":
textBox2.Text += "Ala-";
break;
case "gca":
textBox2.Text += "Ala-";
break;
case "gcg":
textBox2.Text += "Ala-";
break;
case "uau":
textBox2.Text += "Tyr-";
break;
case "uac":
textBox2.Text += "Tyr-";
break;
case "uaa":
textBox2.Text += "|-";
break;
case "uag":
textBox2.Text += "|-";
break;
case "cau":
textBox2.Text += "Histidine-";
break;
case "cac":
textBox2.Text += "His-";
break;
case "caa":
textBox2.Text += "Gln-";
break;
case "cag":
textBox2.Text += "Gln-";
break;
case "aau":
textBox2.Text += "Asn-";
break;
case "aac":
textBox2.Text += "Asn-";
break;
case "aaa":
textBox2.Text += "Lys-";
break;
case "aag":
textBox2.Text += "Lys-";
break;
case "gaa":
textBox2.Text += "Glu-";
break;
case "gag":
textBox2.Text += "Glu-";
break;
case "ugu":
textBox2.Text += "Cys-";
break;
case "ugc":
textBox2.Text += "Cys-";
break;
case "uga":
textBox2.Text += "|-";
break;
case "ugg":
textBox2.Text += "Trp-";
break;
case "cgu":
textBox2.Text += "Arg-";
break;
case "cgc":
textBox2.Text += "Arg-";
break;
case "cga":
textBox2.Text += "Arg-";
break;
case "cgg":
textBox2.Text += "Arg-";
break;
case "agu":
textBox2.Text += "Ser-";
break;
case "agc":
textBox2.Text += "Ser-";
break;
case "aga":
textBox2.Text += "Arg-";
break;
case "agg":
textBox2.Text += "Arg-";
break;
case "ggu":
textBox2.Text += "Gly-";
break;
case "ggc":
textBox2.Text += "Gly-";
break;
case "gga":
textBox2.Text += "Gly-";
break;
case "ggg":
textBox2.Text += "Gly-";
break;
default:
break;
}
}
catch
{
MessageBox.Show("Invalid input!","Error");
textBox2.Text = "";
}
}
private void menuItem1_Click(object sender, EventArgs e)
{
textBox2.Text = "";
if (textBox1.Text == "")
{
MessageBox.Show("You have to enter a string.", "Null input");
}
else if (textBox1.Text.Length % 3 == 0)
{
if (comboBox1.SelectedItem.ToString() == "Complete names")
{
string[] inputStr = new String[(textBox1.Text.Length / 3)];
for (int i = 0; i < (textBox1.Text.Length / 3); i++)
{
int strLenght = 3 * i;
inputStr[i] = textBox1.Text.Substring(strLenght, 3);
convertEngineComplete(inputStr[i]);
}
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
}
else if (comboBox1.SelectedItem.ToString() == "Short names")
{
string[] inputStr = new String[(textBox1.Text.Length / 3)];
for (int i = 0; i < (textBox1.Text.Length / 3); i++)
{
int strLenght = 3 * i;
inputStr[i] = textBox1.Text.Substring(strLenght, 3);
convertEngineShort(inputStr[i]);
}
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
}
}
else
{
MessageBox.Show("Check your input.", "Error");
}
}
private void menuItem4_Click(object sender, EventArgs e)
{
this.Close();
}

private void menuItem3_Click(object sender, EventArgs e)
{
MessageBox.Show("...", "About");
}
}
}

rahmana
یک شنبه 22 شهریور 1388, 02:18 صبح
سلام اينكه خيلي راحته
please send me the error number and error discription
i sending you the answer
ok?

silverfox
یک شنبه 22 شهریور 1388, 08:35 صبح
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
at System.String.Substring(Int32 startIndex, Int32 length)
at Zist.Form1.menuItem1_Click(Object sender, EventArgs e) in H:\ppc\Zist\Zist\Form1.cs:line 441
at System.Windows.Forms.MenuItem.OnClick(EventArgs e)
at System.Windows.Forms.MenuItem.MenuItemData.Execute ()
at System.Windows.Forms.Command.Invoke()
at System.Windows.Forms.Command.DispatchID(Int32 id)
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.ContainerControl.WndProc(Mess age& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Zist
Assembly Version: 1.0.0.0
Win32 Version:
CodeBase: file:///H:/ppc/Zist/Zist/bin/Debug/Zist.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///H:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

length cannot be less than zero.
parameter name: length.

SMRAH1
یک شنبه 22 شهریور 1388, 11:48 صبح
سلام

توی تابع menuItem1_Click ، اول نوشتی:

textBox2.Text = "";بعد داری:

textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);خوب معلومه خطا باید بده! چون جدا کردن رشته از اول به طول منفی یک،معنی نداره.

موفق باشی

silverfox
یک شنبه 22 شهریور 1388, 12:30 عصر
مرسی من همش تو Switch دنبالش می گشتم فکر می کردم به دیفالت اون داره گیر می ده اصلا چشم ندید این تیکش رو...مرسی...