`
shirlly
  • 浏览: 1647925 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

常用的异常处理类

    博客分类:
  • .NET
阅读更多
ExceptionHelper.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;

namespace MyNet.Common.Framework
{
    /// <summary>
    /// 异常帮助类
    /// </summary>
    public class ExceptionHelper
    {
        #region 记录异常
        /// <summary>
        /// 记录异常
        /// </summary>
        /// <param name="exception">异常</param>
        private static void LogException(Exception exception)
        {

            //事件信息初始化
            StringBuilder eventMessage = new StringBuilder();
            eventMessage.Append("\r\n-----------------------------------------\r\n");
            eventMessage.Append("远程主机:").Append(SysVariable.UserHostAddress).Append("\r\n");
            eventMessage.Append("会话信息:").Append(SysVariable.SessionInfo).Append("\r\n");
            eventMessage.Append("出错页面:").Append(SysVariable.CurrentContext.Request.RawUrl).Append("\r\n");
            //eventMessage.Append("页面来源:").Append(SysVariable.CurrentContext.Request.UrlReferrer.ToString()).Append("\r\n");
            eventMessage.Append("事件信息:").Append(exception.Message).Append("\r\n");
            eventMessage.Append("堆栈跟踪:").Append(exception.StackTrace).Append("\r\n");
            eventMessage.Append("\r\n-----------------------------------------\r\n");

            //写事件
            EventLog.WriteEntry("Application", eventMessage.ToString(), EventLogEntryType.Error);
        }
        #endregion

        #region 释放异常
        /// <summary>
        /// 释放异常
        /// </summary>
        /// <param name="exception">异常</param>
        public static void DisposeException(Exception exception)
        {
            //取得异常类型
            Type type = exception.GetType();

            //输入异常
            if (type == typeof(InputException))
            {
                //提示用户
                ScriptHelper.MessageDialog(exception.Message,true);
                return;
            }
            //权限异常
            if (type == typeof(PowerException))
            {
                //提示用户
                SysVariable.CurrentContext.Session.Add("ErrorMessage", "对不起您没有拥有访问该页面的权限");
                SysVariable.CurrentContext.Session.Add("BackUrl", SysVariable.CurrentContext.Request.Url.ToString());

                if (SysConfig.ErrorTranser)
                    SysVariable.CurrentContext.Response.Redirect("../../Common/Main/MainError.aspx");
                return;
            }
            //系统异常
            else
            {
                //记录异常
                LogException(exception);

                //判断异常类型
                string errorMessage = "";
                Exception innerException = exception.InnerException;
                if (innerException is System.Data.Common.DbException)
                {
                    errorMessage = "数据库执行失败,请稍后重试!";
                }
                else if (innerException is ArgumentException)
                {
                    errorMessage = string.Concat("方法调用失败,参数(", ((ArgumentException)innerException).ParamName, " )传递的值是不合法的!");
                }
                else
                {
                    errorMessage = "程序执行出错了,请联系技术人员!";
                }

                //提示用户
                SysVariable.CurrentContext.Session.Add("ErrorMessage", errorMessage);
                SysVariable.CurrentContext.Session.Add("BackUrl", SysVariable.CurrentContext.Request.Url.ToString());

                if (SysConfig.ErrorTranser)
                    SysVariable.CurrentContext.Response.Redirect(SysVariable.UrlApplication + "/MainError.aspx");

                return;
            }
        }
        #endregion
    }
}



SysAssert.cs
using System;
using System.Collections.Generic;
using System.Text;


namespace MyNet.Common.Framework
{
    /// <summary>
    /// 平台断言类
    /// </summary>
    public class SysAssert
    {
        #region 测试条件
        /// <summary>
        /// 测试条件
        /// </summary>
        /// <param name="condition">待测试条件</param>
        /// <param name="errorMessage">错误信息</param>
        public static void CheckCondition(bool condition, string errorMessage)
        {
            //测试条件
            CheckCondition(condition, errorMessage, SysExceptionType.InputException);
        }
        #endregion

        #region 测试条件
        /// <summary>
        /// 测试条件
        /// </summary>
        /// <param name="condition">待测试条件</param>
        /// <param name="errorMessage">错误信息</param>
        public static void CheckCondition(bool condition, string errorMessage, SysExceptionType sysExceptionType)
        {
            //测试条件
            if (!condition)
            {
                switch (sysExceptionType)
                {
                    case SysExceptionType.InputException:

                        //抛出输入异常
                        throw new InputException(errorMessage);

                    case SysExceptionType.PowerException:

                        //抛出权限异常
                        throw new PowerException(errorMessage);

                    default:

                        //抛出输入异常
                        throw new InputException(errorMessage);
                }

            }
        }
        #endregion
    }
}



SysException.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace MyNet.Common.Framework
{
    #region 平台输入错误异常类
    /// <summary>
    /// 平台输入错误异常类
    /// </summary>
    public class InputException : ApplicationException
    {
        #region 异常信息
        /// <summary>
        /// 异常信息
        /// </summary>
        private string _Message;
        public override string Message
        {
            get
            {
                return _Message;
            }
        }
        #endregion

        #region 异常构造函数
        /// <summary>
        /// 异常构造函数
        /// </summary>
        /// <param name="message">异常信息</param>
        public InputException(string message)
        {
            _Message = message;
        }
        #endregion
    } 
    #endregion

    #region 平台权限错误异常类
    /// <summary>
    /// 平台权限错误异常类
    /// </summary>
    public class PowerException : ApplicationException
    {
        #region 异常信息
        /// <summary>
        /// 异常信息
        /// </summary>
        private string _Message;
        public override string Message
        {
            get
            {
                return _Message;
            }
        }
        #endregion

        #region 异常构造函数
        /// <summary>
        /// 异常构造函数
        /// </summary>
        /// <param name="message">异常信息</param>
        public PowerException(string message)
        {
            _Message = message;
        }
        #endregion
    }
    #endregion

    public enum SysExceptionType
    {
        InputException,

        PowerException
    }


}

分享到:
评论

相关推荐

    常用类与异常处理

    常用类与异常处理,整理的非常详细,和大家一起分享一下

    金融系统常用异常处理

    金融系统异常处理是确保金融服务稳定性和安全性的重要环节。在金融行业中,系统异常可能涉及到交易中断、数据丢失、安全漏洞等问题,这些都会对金融机构的声誉、客户信任度以及法律法规合规性产生严重影响。因此,...

    java课件 常用类与异常处理

    Java中的常用类与异常处理是Java编程中至关重要的部分,这些概念构成了Java应用程序的基础和健壮性。在Java中,`Object`类是所有类的父类,它提供了几个核心的方法,包括`equals()`, `hashCode()`, 和 `toString()`...

    实验二常用类与异常处理.pdf

    实验二常用类与异常处理.pdf

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达

    java源程序 课件 常用类 抽象类与接口 图形用户界面 多线程反射 泛型 时间日期类 数组 异常处理 字符串类与正则表达等相关知识的ppt课件和源程序代码,是初学者的帮手,包含了Java所需的所有知识点。。。。

    DAY_13 Java常用类及异常处理.md

    该文档从简单的Java程序入手,介绍了如何产生随机数,介绍了正则表达式的关键,在...同时本文还介绍了异常的几种情况,更清晰的认识异常的处理,在工作中写出优质的代码,离不开这些细节。本文特别适合Java小白学习。

    异常的分类以及处理方法

    这是最常用的异常处理方式,通过`try`块来封装可能引发异常的代码段,一旦发生异常,控制权就会转移到对应的`catch`块进行处理。`finally`块则用于释放资源等操作,无论是否发生异常都会被执行。 示例代码: ```...

    异常处理的两个实验代码

    下面,我们将深入探讨异常处理的基本原理、常用方法以及两个实验代码中的关键点。 异常处理的主要目标是中断正常的代码流程,当发生错误时执行特定的清理操作,并提供有关错误的有用信息。在大多数编程语言中,异常...

    异常值的类型及其处理方法

    3. **替换**:用平均值、中位数或其他统计量来替代异常值也是一种常用的方法。 4. **隔离分析**:有时候,异常值本身也可能包含有价值的信息。因此,可以将异常值单独提取出来进行进一步分析。 5. **模型调整**:...

    springboot 常用配置,模板引擎,全局异常处理使用代码

    1. **全局异常处理**: Spring Boot 提供了优雅的方式来进行全局异常处理,通过实现`ErrorController`接口或者自定义`@ControllerAdvice`类,可以捕获并统一处理所有控制器层的异常。例如,创建一个`...

    Oracle 存储过程异常处理.docx

    Oracle 存储过程异常处理 Oracle 存储过程异常处理是指在 Oracle 数据库中使用存储过程时出现的异常情况的处理方法。异常处理是指在程序执行过程中出现错误或异常时,采取相应的处理措施,以确保程序的可靠性和...

    C#教你使用异常处理

    本文将深入探讨C#中的异常处理机制,包括其基本概念、常用关键字、异常处理格式,以及如何通过实战案例理解和运用自定义异常。 ### C#异常处理的关键字 C#提供了几个重要的关键字来处理异常: - **try**:此...

    Java中常用异常列表.pdf

    Java中常用异常列表 异常是Java程序中的一种错误处理机制,用于捕获和处理运行时错误。在Java中,异常可以分为两大类:checked异常和unchecked异常。checked异常是编译器强制检查的异常,unchecked异常是运行时异常...

    熟悉而又陌生的异常处理

    标题:“熟悉而又陌生的异常处理” 描述:“熟悉而又陌生的异常处理.异常处理异常处理” 标签:“异常处理” 部分内容:这段部分提及了异常处理的重要性和处理策略,包括异常的分类、异常构造函数、异常声明、...

    C#基础类 常用类 常用方法源码 .NET 工具类 源码

    通过研究这个压缩包中的源码,你可以了解到C#类的设计模式、异常处理、内存管理、线程同步等核心概念。同时,这也有助于你掌握如何编写高效、可维护的C#代码,以及如何利用.NET框架提供的丰富资源。源码学习是提升...

    JAVA 异常处理的学习

    在Java编程语言中,异常处理是一项至关重要的技能,它确保了程序在遇到错误或异常情况时能够优雅地处理,而不是突然崩溃。肖俊老师的讲解深入浅出,将帮助我们掌握这一核心概念。以下是对"JAVA 异常处理的学习"主题...

    JAVA程序设计基础异常处理和常用系统类PPT教案学习.pptx

    JAVA程序设计基础异常处理和常用系统类PPT教案学习.pptx

    基于Delphi的异常和错误处理

    这是最基础也是最常用的异常处理方式之一。 ```pascal try // 可能产生异常的代码 except // 处理异常的代码 end; ``` 2. **`try...finally...end` 结构**:无论`try`块内是否发生异常,`finally`部分总会...

    基于Java的异常处理机制研究.pdf

    利用try…catch捕捉并处理掉异常是Java语言中最常用的异常处理方法。try语句块中包含可能引发异常的操作,catch语句块中包含异常处理代码。当引发了某种类型的异常时,则执行catch语句块的异常处理代码。例如,下面...

    springboot整合thymeleaf+maven实现异常处理页面

    在这个“springboot整合thymeleaf+maven实现异常处理页面”的案例中,我们将探讨如何在 SpringBoot 应用中整合 Thymeleaf 和 Maven,以及如何设置自定义的全局异常处理机制,使得当应用程序出现异常时,能够优雅地将...

Global site tag (gtag.js) - Google Analytics