可以啊
if (flag==1) throws new myexection("hello world");public myexception : exception
{
    public myexception(string msg)
    {
        Console.WriteLn(msg);
    }
}

解决方案 »

  1.   

    if (flag==1) throws new myexection("hello world");
    谢谢!象以上语句,是代码运行之前可以先知的,比如说一些数据溢出等无法先知的系统错误,系统运行时能够自动引发自定义的错误处理类.
      

  2.   

    try{all your code in hear;}
    catch(Exception e)
    {
       throw new myexception("hello world");
    }
      

  3.   

    楼主的意思是:不对每段代码进行直接的异常处理,而是由一个专门的功能类来处理这些异常吧。首先,我不赞成这个想法,每一个功能块、代码段都有各自的逻辑和状态,专门的功能类不适合也不可处理得了所有的异常情况,而且如果异常不及时处理的话,所有后继代码都不能得以继续。第二,应该有一个专门的功能类来处理没有正确处理的异常,也就是说这些异常是开发过程中未预计到的异常。对于第二点,可以通过处理 Application.ThreadException(注意:这个事件需要关闭 JIT 异常调试功能再能被引发)和 AppDomain.CurrentDomain.UnhandledException 两个事件。如以下代码所示(具体如何处理,自行实现,仅提供一个思路):
        public class ExceptionManager
        { #region Constructors
            private ExceptionManager()
            {
            } #endregion    
    public static void Attach()
    {
    Application.ThreadException += new ThreadExceptionEventHandler(ExceptionManager.Application_ThreadException);
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(ExceptionManager.AppDomain_UnhandledException);
      }

    public static void Detach()
    {
    Application.ThreadException -= new ThreadExceptionEventHandler(ExceptionManager.Application_ThreadException);
    AppDomain.CurrentDomain.UnhandledException -= new UnhandledExceptionEventHandler(ExceptionManager.AppDomain_UnhandledException);
      }                   // ……
    }
    在 Application.Run 之前调用 Attach 方法,在之后调用 Detach 方法。要关闭 JIT 异常调试,请在配置文件中加入以下配置节:
    <system.windows.forms jitDebugging="false" />以上示例仅用于 WinForm 应用程序。
      

  4.   

    还是用了try...catch,我是想如果整个系统都这样用,那么代码会很多.
      

  5.   

    我的意思正是楼主说的第二点,不知道在webform中可不可以,我试试.
      

  6.   

    ExceptionManager.Application_ThreadException
    ExceptionManager.AppDomain_UnhandledException
    两个方法的代码,我没有提供。在这两个方法中,你就可以自已决定来如何处理未预计的异常了,当然也可再显示一个窗口,来告诉用户有未预计的异常发生了。并且可以像微软的 Windows 错误报告一样,在用户点击一个“发送错误报告”按钮时搜集异常信息(包括机器信息和其他状态信息)并发送到你公司的技术支持人员那里。但对于 AppDomain.CurrentDomain.UnhandledException 事件,其事件参数 UnhandledExceptionEventArgs 中有一个属性 IsTerminating。如果此值为 true,说明已发生了致命性异常错误,这时可能已不适合再显示一个错误报告窗口了,这种情况下我的做法是显示一个 MessageBox,同时将异常信息复制到系统剪贴板上,负责的用户可以从系统剪帖板上复制异常信息后再发送给公司的技术支持人员。不过,值得一提的是,我所使用的 MessageBox 是一个增强后的消息框,其中有一个特点:能够使用鼠标在消息框上选取和复制异常信息(一个只读文本框),而普通的消息框是不能这么操作的。这个 MessageBox 的增强实现方法来自以下文章:
       http://msdn.microsoft.com/msdnmag/issues/02/11/CuttingEdge/
      

  7.   

    web.config里设置<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx" />来使用Error.aspx统一处理页面的所有异常,可是跳转到Error.aspx页时Server.GetLastError()却捕获不到任何异常,请问有谁知道是什么原因?怎样才能捕获异常?
      

  8.   

    1. 你把web.config里设置<customErrors mode="On" defaultRedirect="Error.aspx" />
    2. 在Global.asax.vb中Application_Error事件中加入
       Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
            If Not Context Is Nothing And Context.IsCustomErrorEnabled Then
                     Server.Transfer("cerror.aspx", False)
            End If
       End Sub
    3.在error.aspx.vb中加入
       Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)handles MyBase.Load
            Dim ex As Exception = Server.GetLastError.GetBaseException
            Label1.Text = ex.Message
        End Sub
      试一下!!!!!!你别忘了在你的异常的时候throw出来....