跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C#

C# 业务异常处理:BusException 类设计与使用

C# 业务异常处理模型 BusException 旨在解决业务逻辑错误与系统异常的区分问题。该类继承自 Exception,通过 ErrorCode 属性传递前端所需的错误码,构造函数支持自定义消息和代码。适用于后端返回友好提示而不暴露内部堆栈信息的场景。

DataScient发布于 2020/6/26更新于 2026/6/615 浏览
C# 业务异常处理:BusException 类设计与使用

C# 业务异常处理:BusException 类设计

在企业级开发中,我们常遇到一种情况:业务规则校验失败需要提示用户,但这并不是服务器崩溃或数据库连接断开。直接使用标准的 Exception 往往会让前端难以区分是'系统故障'还是'操作错误'。

这里分享一个常用的业务异常基类 BusException。它的设计初衷很简单:保留异常堆栈以便排查,同时携带明确的错误码供前端展示友好提示。

核心实现

该类继承自 System.Exception,主要增加了 ErrorCode 属性,并提供了灵活的构造函数。

using System;
namespace Coldairarrow.Util
{
    /// <summary>
    /// 业务异常
    /// 注:并不会当作真正的异常处理,仅为方便返回前端错误提示信息
    /// </summary>
    public class BusException : Exception
    {
        /// <summary>
        /// 错误代码
        /// </summary>
        public int ErrorCode { get; set; }

        /// <summary>
        /// 构造函数
        /// </summary>
        public BusException() { }

        /// <summary>
         构造函数
        
        
         { }

        
        
        
        
        
        
        {
            ErrorCode = errorCode;
        }
    }
}
///
/// </summary>
/// <param name="message">错误信息</param>
public BusException(string message) : base(message)
/// <summary>
/// 构造函数
/// </summary>
/// <param name="message">错误信息</param>
/// <param name="errorCode">错误代码</param>
public BusException(string message, int errorCode) : base(message)

关键点说明

  1. 错误码分离:ErrorCode 字段是关键。前端可以根据这个数字直接映射到具体的文案(比如 1001 代表密码错误,2000 代表服务不可用),而无需解析 Message 字符串。
  2. 构造灵活性:提供了无参、仅消息、以及消息加代码三种构造方式,适应不同层级的调用需求。
  3. 基类选择:虽然注释提到'不会当作真正的异常处理',但在 C# 中它依然是一个 Exception 实例。这意味着它可以被 try-catch 捕获,只是通常我们在 Controller 层统一拦截后,根据 ErrorCode 返回特定状态码给客户端。

这种模式能有效避免将内部技术细节泄露给用户,同时保证开发调试时能获取完整的异常上下文。

目录

  1. C# 业务异常处理:BusException 类设计
  2. 核心实现
  3. 关键点说明
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vary-toy:轻量级多模态大模型与消费级显卡部署实践
  • Windows 10 下使用 QEMU 安装 CentOS 7.9 ARM64 虚拟机
  • 基于 Zynq FPGA 的雷龙 SD NAND 测试
  • 最大流与最小割算法详解:Dinic 算法实现与优化
  • LLaMA-Factory 全流程训练模型
  • Flutter 三方库 algolia_client_recommend 鸿蒙适配指南
  • MiniRAG:轻量级检索增强生成方法与异构图索引技术
  • DooTask 升级指南:解锁 AI 新功能
  • 基于 Docker 部署节点小宝实现 SD-WAN 远程开发
  • AirSim 无人机仿真平台:环境搭建与实战应用
  • STL 专题:vector 变长数组的使用与特性
  • 基于 OpenClaw 的三省六部制多 Agent 系统 Windows 移植版
  • Visual C++ Redistributable 运行库安装与 DLL 缺失修复指南
  • LangBot 企业级即时通讯 AI 机器人平台介绍
  • 基于本地大语言模型与 LangChain 构建免费 AI 搜索问答助手
  • 小厂架构师 AI Agent 落地实战:从概念到 Bug 修复工具
  • 运维排查问题常用工具与方法论
  • 霞鹜文楷字体:专业级中文排版的技术突破与跨平台适配
  • 二叉树高频节点问题解析
  • 人脸识别核心算法深度解析:FaceNet 与 ArcFace 从原理到实战

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online