C#异常处理-自定义异常

程序中可能出错的情形很多,如果系统提供地异常类不能够和程序中的异常相匹配,就需要程序员自定义异常类。自定义异常类的语法如下:

class 自定义异常名:基类异常名
{
//语句块
}

自定义异常时应遵循的编码如下:
将异常类命名为单词“Exception”结尾,如EmailException,UserMessageException。

自定义异常类的代码如下:
ApplicationException //定义异常类派生自基类
public class EmailException:Application
{
public EmaiException(string msg):base(msg)//自定义异常类的构造函数,继承基类异常信息。
{

}
}

自定义异常时,一定要注意出现异常时的提示信息,即异常类的Message属性,一般使用构造函数继承来自基类的Message属性,具体写法如上所示。

下面看一个自定义异常类的使用实例

using System;
public class EmailException
{
public EmailException(string msg): base(msg){}
}

class Program
{
static void Main()
{
    Console.WriteLine("请输入Email地址");
    string email = Console.ReadLine();
    string[]substrings = email.Split('@');
    if (substrings.Length != 2)
    {
      throw new EmailException("email地址错误");
    }
    else
    {
      Console.WriteLine("输入正确");
    }
}
}

此段代码运行要求输入email地址,如果输入正确,执行else之后的语句,输出“输入正确”的语句;如果输入错误,抛出自定义异常EmailException。

由于在代码中只是直接抛出异常,没有处理异常的语句块。所以程序中断执行,抛出异常。现在我们改写代码,增加异常捕获语句。

using System;
public class EmailException:ApplicationException
{
public EmailException(string msg): base(msg){}
}

class Program
{
static void Main()
{
    Console.WriteLine("请输入Email地址");
    string email = Console.ReadLine();
    string[]substrings = email.Split('@');
    try
    {
      if (substrings.Length != 2)
      {
        throw new EmailException("email地址错误");
      }
      else
      {
        Console.WriteLine("输入正确");
      }
    }
    catch (EmailException ex)
    {
      Console.WriteLine(ex.Message);
    }
}
}

将正常执行的代码放在try块中,如果格式错误,用throw手动抛出异常,在后面添加catch语句捕获异常,进行处理,输出错误提示。调试此程序发现,即使用email格式输入错误,也不会中断程序运行,而是直接输出错误提示。通过对比这两段代码的结果,可以发现增加异常处理的好处。

posted on 2012-06-28 09:15  流星落  阅读(735)  评论(0编辑  收藏  举报

导航