C# WINFORM自定义异常处理方法

一个简单的统一异常处理方法。系统底层出现异常,写入记录文件,系统顶层捕获底层异常,显示提示信息。 

 /// <summary>
    /// 自定义异常类
    /// </summary>
    public static class ExceptionExtension

    {
        /// <summary>
        /// 用户自定义错误消息
        /// </summary>
        public static string ErrorMessage { get; set; }

        /// <summary>
        /// 写入异常日志
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="Message">用户自定义错误消息</param>
        public static void WriterExceptionLog(Exception ex, string Message = "")
        {
            string filePath = Environment.CurrentDirectory.Replace(@"\bin\Debug", "") + @"\ErrorLog";
            if (!System.IO.Directory.Exists(filePath))
            {
                System.IO.Directory.CreateDirectory(filePath);
            }
            string fileName = filePath + @"\ErrorLog.txt";

            StringBuilder errorInfo = new StringBuilder();
            errorInfo.Append($"*******异常发生时间:{DateTime.Now}*******\n");
            errorInfo.AppendFormat(" 异常类型: {0} \n", ex.HResult);
            //msg.AppendFormat(" 导致当前异常的 Exception 实例: {0} \n", ex.InnerException);
            errorInfo.AppendFormat(" 导致异常的应用程序或对象的名称: {0} \n", ex.Source);
            errorInfo.AppendFormat(" 引发异常的方法: {0} \n", ex.TargetSite);
            errorInfo.AppendFormat(" 异常堆栈信息: {0} \n", ex.StackTrace);
            errorInfo.AppendFormat(" 异常消息: {0} \n", ex.Message);
            errorInfo.AppendFormat(" 系统信息: {0} \n", Message);
            ErrorMessage += Message;
            try
            {
                if (File.Exists(fileName))
                {
                    using (StreamWriter tw = File.AppendText(fileName))
                    {
                        tw.WriteLine(errorInfo.ToString());
                    }
                }
                else
                {
                    TextWriter tw = new StreamWriter(fileName);
                    tw.WriteLine(errorInfo.ToString());
                    tw.Flush();//将缓冲区的数据强制输出,清空缓冲区
                    tw.Close();//关闭数据流
                    tw = null;
                }
            }
            catch (Exception) { Console.ReadKey(); }
        }
    }
}

比较简单,该类仅定义了一个属性和一个方法。具体使用如下:系统底层(例如数据访问层或业务逻辑层)发现异常时, 记录异常信息,将异常上抛。例如:

//后台处理
try
{
    //有可能发生异常操作
}
catch (Exception ex)
{
    string strSlq = "";
    ExceptionExtension.WriterExceptionLog(ex, "在查询记录时发生异常。SQL语句为:" + strSlq);
    throw;//向上抛出异常
}
finally
{
    //清理
}

用户交互层,捕获底层异常,显示提示信息。例如:

//用户界面
 try
 {
     //调用底层有可能发生异常操作
 }
 catch (Exception)
 {
     //MessageBox.Show(ExceptionExtension.ErrorMessage, "系统异常错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }
 finally
 {
     //清理
 }

到此这篇关于C# WINFORM自定义异常处理方法的文章就介绍到这了,更多相关C# WINFORM异常处理方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# WinForm捕获全局变量异常 SamWang解决方法

    许多小公司的项目都缺少异常处理模块,我们也是.经常会出现这种情况,用户在UI界面操作,就直接跳出堆栈调用的异常信息对话框,老板看到那叫一个火啊!你们的代码怎么天天出现乱码.呵呵!这就是没有异常捕获处理导致的,现在许多人写代码都没意识处理异常,只要实现功能就好,我的许多组员也是如此. 项目刚接手,所以打算做一个异常全局捕获,统一处理的模式,采用具体详细信息的对话框提醒与日志文件保存方式.以下是根据网上找的C#winform全局异常捕获做了点修改.(等项目异常处理全部完成后,将心得体会做个记录,此处

  • C# WinForm捕获未处理的异常实例解析

    本文以一个完整的实例形式讲述了C# WinForm捕获未处理的异常的方法.分享给大家供大家参考之用.具体代码如下: using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespace GobalException { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary>

  • C#异常处理的技巧和方法

    c#中或多或少回出现一些意向不道的异常,那么如何去捕获这个异常就非常的关键--这个异常可能是系统的不可控因素也有可能是程序本身才一个异常.下面就具体的解决方案提供给大家,希望有所帮助 从最常见的分母为0的情况的实例 通过try catch finally三个关键字的一个语法结构图.finally是监听程序是否在try或者catch中执行 下面列举的是try执行的语句是一个异常错误的情况 下面列举的是try执行语句是一个正确的情况 异常类的一个继承顺序图,异常类中的属性列表 catch中的表达式的

  • C#异常处理总结及简单实例

    C#异常处理总结及简单实例 一.异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常. 因此处理这种错误,就称为异常处理. 二.异常处理如何操作? C# 异常处理时建立在四个关键词之上的:try.catch.finally 和 throw. 1.try:一个 try 块标识了一个将被激活的特定的异常的代码块.后跟一个或多个 catch 块. 2.catch:程序通过异常处理程序捕获异常.catch 关键字表示异常的捕获. 3.finally:finally

  • C# WINFORM自定义异常处理方法

    一个简单的统一异常处理方法.系统底层出现异常,写入记录文件,系统顶层捕获底层异常,显示提示信息.  /// <summary> /// 自定义异常类 /// </summary> public static class ExceptionExtension { /// <summary> /// 用户自定义错误消息 /// </summary> public static string ErrorMessage { get; set; } /// <s

  • laravel框架 api自定义全局异常处理方法

    api返回实现 $result = User::find($id); if(empty($result)){ throw new ApiException('获取失败'); } else{ return json_decode($result); } api返回信息 { "msg": "", "data": "获取失败", "status": 0 } 1,添加异常类 namespace App\Except

  • Spring Cloud Gateway自定义异常处理Exception Handler的方法小结

    版本: Spring Cloud 2020.0.3 常见的方法有 实现自己的 DefaultErrorWebExceptionHandler 或 仅实现ErrorAttributes. 方法1: ErrorWebExceptionHandler (仅供示意) 自定义一个 GlobalErrorAttributes: @Component public class GlobalErrorAttributes extends DefaultErrorAttributes{ @Override pub

  • SpringBoot详解实现自定义异常处理页面方法

    目录 1.相关介绍 2.代码实现 3.运行测试 1.相关介绍 当发生异常时, 跳转到我们自定义的异常处理页面. SpringBoot中只需在静态资源目录下创建一个error文件夹, 并把异常处理页面放入其中, 页面的命名与异常错误代码对应, 如404.html, 500.html. 5xx.html可以对应所有错误代码为5开头的错误 默认静态资源目录为类路径(resources)下的: /static /public /resources /META-INF/resources 2.代码实现 H

  • 基于PHP7错误处理与异常处理方法(详解)

    PHP7错误处理 PHP 7 改变了大多数错误的报告方式.不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出. 这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获.如果没有匹配的 catch 块,则调用异常处理函数(事先通过 set_exception_handler() 注册)进行处理. 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error). Error 类并非继承自

  • SpringBoot错误处理机制以及自定义异常处理详解

    上篇文章我们讲解了使用Hibernate Validation来校验数据,当校验完数据后,如果发生错误我们需要给客户返回一个错误信息,因此这节我们来讲解一下SpringBoot默认的错误处理机制以及如何自定义异常来处理请求错误. 一.SpringBoot默认的错误处理机制 我们在发送一个请求的时候,如果发生404 SpringBoot会怎么处理呢?我们来发送一个不存在的请求来验证一下看看页面结果.如下所示: 当服务器内部发生错误的时候,页面会返回什么呢? @GetMapping("/user/{

  • thinkphp5.1 中使用自定义异常处理类进行接管

    配置文件修改 config/app.php 自定义异常接管类出处 'exception_handle' => '\app\common\exception\ExceptionHandle', 自定义处理异常方法 寡人的存放目录为 app/common/exception ApiException.php namespace app\common\exception; use Exception; class ApiException extends Exception { /** * 构造函数

  • Spring Cloud Gateway自定义异常处理Exception Handler

    版本: Spring Cloud 2020.0.3 常见的方法有 实现自己的 DefaultErrorWebExceptionHandler 或 仅实现ErrorAttributes. 方法1: ErrorWebExceptionHandler (仅供示意) 自定义一个 GlobalErrorAttributes: @Component public class GlobalErrorAttributes extends DefaultErrorAttributes{ @Override pub

  • SpringMVC 异常处理机制与自定义异常处理方式

    目录 SpringMVC默认处理的几种异常 @ResponseStatus 异常处理的顺序 自定义异常类(SpringMVC的异常处理) ①:自定义异常类 ②:自定义异常处理器 ③:配置我们的异常处理器 本节介绍SpringMVC的异常处理机制 首先介绍SpringMVC默认提供了一些HTTP错误类似码的默认异常处理 如何给一个Controller自定义异常处理 如何为项目做一个全局异常处理 提到异常处理,就不得不提HandlerExceptionResolvers,我们的DispatcherS

  • Java异常处理方法汇总

    目录 一.异常是什么 二.异常类型 三.常见异常 四.常用异常方法 五.异常处理 六.关键字 throws/throw 七.自定义异常 前言: 我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理.如果不处理异常,将会导致软件异常中断,崩溃,退出,严重影响用户的使用和体验.如果合理的应用异常处理那将会减少软件出现的错误,可以友好的提示用户,提升用户的体验. 一.异常是什么 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.如:用户输入非法数据,做除法运算的时

随机推荐