异常是程序运行中发生的错误
异常处理是程序设计的一部分
在c#中异常处理是通过Exception基类进行的
可以创建自己的异常类
但这个类必须是继承自Exception基类
异常将导致不完善或者不需要的结果因此在程序设计中需要处理异常异常也可以是象IndexOutOfBounds这样的错误这个错误表示程序试图访问数组中部存在的元素比如数组最大元素为当试图访问元素时就将会发生这样的错误但这些都是内建的异常可以直接通过Exception基类处理如果发生的异常不是内建的那么就需要我们自己见一个异常处理类当然这个类时继承自Exception基类
下面的程序定义了一个自己的异常类
using System;
public class MyException:Exception
{
public string s;
public MyException():base()
{
s=null;
}
public MyException(string message):base()
{
s=messageToString();
}
public MyException(string messageException myNew):base(messagemyNew)
{
s=messageToString();// Stores new exception message into class member s
}
public static void Test()
{
string strstringmessage;
bool flag=false;
stringmessage=null;
char ch= ;
int i=;
ConsoleWrite(Please enter some string (less than characters) );
str=ConsoleReadLine();
try{
ch=str[i];
while (flag==false)
{
if (ch==\r)
{
flag=true;
}
else{
ch=str[i];
i++;
}
}
}
catch(Exception e){
flag=true;
}
if (i>)
{
stringmessage=你的输入不能超过个字 !;
throw new MyException(stringmessage);
}
}
public static void Main()
{
try
{
Test();
}
catch(MyException e)
{
ConsoleWriteLine(es);
}
}
}
上面的代码建立了一个新的继承于Exception基类的异常类叫MyException这个类有三个过载构造函数采用三个构造函数的目的十分简单为了能够过载基类的构造函数基类中缺省的和已经实现的构造函数必须在继承类中实现但是我们设计这个类的真正目的是当用户输入超过 个字就显示一段错误提示信息提醒用户输入不能超过个字虽然这更像是数据验证而不是一个真正的异常但却是一个比较好的例子新的异常MyException被函数Test()抛出通过该方法信息你的输入不能超过个字被main()的catch块获得