如题

解决方案 »

  1.   

    系统异常在Exception类中。自己程序中出现的,可以自己设置ID号。
      

  2.   

    异常对象本身不就表示了错误吗?还要错误ID干吗。
    如果你需要,简单点,可以直接用Exception.Message来放置用户提示。为了防止混淆,也可以派生一个异常类,提供一个用户提示信息的的属性。
    在抛出异常的地方设置一下属性,处理的时候直接打出来就好了。
      

  3.   

    根据抛出的异常就已经可以获取信息了.比如抛出的异常实例为e.那么e.Message就是详细信息了.如果想替换一下不友好的信息为自己的友好信息.可以再次抛出.
    throw new Exception
      

  4.   

    to 楼主:
    这种情况下,在需要抛出错误的上下文里(比如执行文件删除操作的那个方法),你是可以知道错误的原因的,因此在那里提供一个详细的错误提示是没问题的。如果除了给出错误提示,还需要作进一步的错误处理,你完全可以派生一个FileInUseException来详细地表示这种错误,并为这个异常类提供诸如FileList的属性给处理错误程序。这样不比结构化方法里面用错误号判断优越得多吗?
      

  5.   

    to sogno(一觞一咏):
    不好意思,我还是个菜鸟.
    我需要将删除正在使用文件的错误与其他错误区别开来,这该如何做到呢?
      

  6.   

    你可以从System.ApplicationException派生一个新类型的Exception(微软推荐的做法,也可以从别的Exception派生),姑且命名为FilesInUserException
    一个可能的实现如下
    public class FilesInUserException : ApplicationException
    {
        private string[] mFileNames;
        public FilesInUserException (string[] lockedFileNames, string message) : base (message)
        {
            mFileName = lockedFileNames;
        }
        public string[] LockedFileNames
        {
            get { return this.mFileNames; }
        }
    }在需要的时候抛出这个异常,例如在某个操作文件的方法里
    public void AccessFiles ()
    {
        string[] lockFileNames;
        //……
        //遇到几个被锁定无法访问的文件,已经把名字的列表放在数组lockFileNames里面了
        throw new FilesInUserException ();
        //……
    }在需要处理这个异常的地方,给出针对这个异常类型的处理方案
    public void CallerMethod ()
    {
        //……
        try
        {
            AccessFiles ()
        }
        catch (FilesInUserException e)
        {
            MessageBox ("文件被锁定,无法访问");
            //其他你想要的处理
        }
        catch (Exception e)
        {
            MessageBox ("发生未知异常");
            //缺省的错误处理
        }
        //……
    }