《项目中的.net》笔记一:继承、错误异常处理

一。继承

1.构造函数和析构函数不能被继承

if(子类没有自定义构造函数)
{ 
        if(基类没有自定义构造函数)
        {
              用子类定义对象时,先自动调用基类的默认构造函数,再调子类的默认构造函数。
         }
         else if(基类有自定义无参构造函数)   
        {
              用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的默认构造函数。
         } 
         else
        {
              用子类定义对象时,编译提示没有默认构造函数可用
         }

else if(子类自定义构造函数但没有调用基类的某个构造函数)

        if(基类没有自定义构造函数)
        {
              用子类定义对象时,先自动调用基类的默认构造函数,再调子类的自定义构造函数。
         }

         else if(基类有自定义无参构造函数)   
        {
              用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的自定义构造函数。
         } 
         else   
        {
              用子类定义对象时,编译提示没有默认构造函数可用
         }

http://blog.sina.com.cn/s/blog_64d57e710100n24f.html

2.派生类只能从一个类中继承,可以通过接口多继承

3.子类不能从静态static方法中调用base.<父类方法名>来调用父类的方法,在静态方法中都不能用base,this 因为它们是类的实例

4.类中有抽象方法(没有“{ }”函数体)时,类必须声明为抽象类,子类不是抽象类时,必须用override重写实现,如果不想在父类中实现也不想声明为抽象类,则把办法声明为虚函数virtual(必须声明函数体体{},如果没有派生类重写该函数,则它可能是原始函数)

--abstract,virtual,override http://www.cnblogs.com/akwwl/archive/2012/08/03/2622026.html

5.多接口继承,有相同的方法名称时,派生类实现方法不能加public等关键字,方法前边必须冠以相应的接口名称。

对于不同名称的方法,必须用public标识

6.public 公有访问。不受任何限制。
   private 私有访问。不允许继承,只限于本类成员访问,子类,实例都不能访问。
   protected 保护访问。只限于本类和子类访问,实例不能访问。
   internal 内部访问。只限于程序集内访问,其他不能访问。
   protected internal 内部保护访问。只限于本程序集或是子类访问。

委托与事件:http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html

二。错误异常

1.catch 中显示添加return。不影响finally的执行,在finally中使用break,continue、return都是非法的。

2.asp.net页面跟踪,在页面顶部添加Trace=“true”;应用程序级跟踪,在web.config中添加<trace enable="true"/>,通过根目录/Trac.axd查看。

转自:http://www.cnblogs.com/chinhr/archive/2007/06/26/795947.html

a.页面级别错误处理,在page_error事件中添加处理代码,通过Server.GetLastError()获取当前页面错误。

void Page_Error(Object sender, EventArgs e)  {
    String message = "<font face=verdana color=red>"
                           + "<h4>" + Request.Url.ToString() + "</h4>"
                           + "错误信息:" + Server.GetLastError().ToString() + "<br/>"
                           + "</font>";

    Response.Write(message);
    Server.ClearError();//注意清除异常
}

b.应用程序级的错误事件中,错误处理方式如下:global.asax文件中的application_error中添加处理 逻辑,可添加其它操作,如写入windows事件日志,发邮件给管理员,将错误信息写入数据库。具体如下:
  protected  void Application_Error(Object sender, EventArgs e)
       {
           String Message = "\n\nURL:\n http://localhost/" + Request.Path
                + "\n\nMESSAGE:\n " + Server.GetLastError().Message
                + "\n\nSTACK TRACE:\n" + Server.GetLastError().StackTrace;
            //写入windows事件日志
            String LogName = "Application";
            if (!EventLog.SourceExists(LogName)) 
            {
                EventLog.CreateEventSource(LogName, LogName);
            }

            EventLog Log = new EventLog();
            Log.Source = LogName;
            Log.WriteEntry(Message, EventLogEntryType.Error);
        }

c. web.config中,自定义错误信息。将应用程序配置为不向远程用户显示错误
<customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> 
   <error statusCode="404" redirect="NoSuchPage.aspx"/> 
   <error statusCode="403" redirect="NoAccessAllowed.aspx"/> 
</customErrors>

注:将 mode 属性设置为 RemoteOnly(区分大小写)。这就将应用程序配置为仅向本地用户(您和开发人员)显示详细的错误。 不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便
不向远程客户端显示应用程序的详细信息。  

"Off" 始终显示详细的 ASP.NET 错误信息。
(可选)包括指向应用程序错误页的 defaultRedirect 属性。
(可选)包括将错误重定向到特定页的 <error> 元素。例如,您可以将标准 404 错误(未找到页)重定向到您自己的应用程序页。

3.  javascript客户端脚本调试:浏览器-工具-internet选项-高级-取消勾选禁用脚本调试。

4.winForm程序用线程异常事件和委托来处理错误异常:http://www.cnblogs.com/eagle1986/archive/2012/02/21/2362361.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值