根据抛出的异常就已经可以获取信息了.比如抛出的异常实例为e.那么e.Message就是详细信息了.如果想替换一下不友好的信息为自己的友好信息.可以再次抛出. throw new Exception
to 楼主: 这种情况下,在需要抛出错误的上下文里(比如执行文件删除操作的那个方法),你是可以知道错误的原因的,因此在那里提供一个详细的错误提示是没问题的。如果除了给出错误提示,还需要作进一步的错误处理,你完全可以派生一个FileInUseException来详细地表示这种错误,并为这个异常类提供诸如FileList的属性给处理错误程序。这样不比结构化方法里面用错误号判断优越得多吗?
to sogno(一觞一咏): 不好意思,我还是个菜鸟. 我需要将删除正在使用文件的错误与其他错误区别开来,这该如何做到呢?
你可以从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 ("发生未知异常"); //缺省的错误处理 } //…… }
如果你需要,简单点,可以直接用Exception.Message来放置用户提示。为了防止混淆,也可以派生一个异常类,提供一个用户提示信息的的属性。
在抛出异常的地方设置一下属性,处理的时候直接打出来就好了。
throw new Exception
这种情况下,在需要抛出错误的上下文里(比如执行文件删除操作的那个方法),你是可以知道错误的原因的,因此在那里提供一个详细的错误提示是没问题的。如果除了给出错误提示,还需要作进一步的错误处理,你完全可以派生一个FileInUseException来详细地表示这种错误,并为这个异常类提供诸如FileList的属性给处理错误程序。这样不比结构化方法里面用错误号判断优越得多吗?
不好意思,我还是个菜鸟.
我需要将删除正在使用文件的错误与其他错误区别开来,这该如何做到呢?
一个可能的实现如下
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 ("发生未知异常");
//缺省的错误处理
}
//……
}