【微软技术栈】C#.NET 如何使用本地化的异常消息创建用户定义的异常

本文内容

  1. 创建自定义异常
  2. 创建本地化异常消息

在本文中,你将了解如何通过使用附属程序集的本地化异常消息创建从 Exception 基类继承的用户定义异常。

一、创建自定义异常

.NET 包含许多你可以使用的不同异常。 但是,在某些情况下,如果它们都无法满足你的需要,则可以创建自己的自定义异常。

假设要创建一个 StudentNotFoundException,其中包含 StudentName 属性。 若要创建自定义异常,请执行以下步骤:

  1. 创建一个从 Exception 继承的可序列化类。 类名称应以“Exception”结尾:

    [Serializable]
    public class StudentNotFoundException : Exception { }
    
  2. 添加默认构造函数:

    [Serializable]
    public class StudentNotFoundException : Exception
    {public StudentNotFoundException() { }public StudentNotFoundException(string message): base(message) { }public StudentNotFoundException(string message, Exception inner): base(message, inner) { }
    }
    
  3. 定义任何其他属性和构造函数:

    [Serializable]
    public class StudentNotFoundException : Exception
    {public string StudentName { get; }public StudentNotFoundException() { }public StudentNotFoundException(string message): base(message) { }public StudentNotFoundException(string message, Exception inner): base(message, inner) { }public StudentNotFoundException(string message, string studentName): this(message){StudentName = studentName;}
    }
    

二、创建本地化异常消息

你已创建一个自定义异常,可以使用如下所示的代码在任何位置将其抛出:

throw new StudentNotFoundException("The student cannot be found.", "John");

上一行的问题是,"The student cannot be found." 只是一个常量字符串。 在本地化应用程序中,你需要根据用户区域性使用不同的消息。 附属程序集是执行此操作的好方法。 附属程序集是一个 .dll,其中包含特定语言的资源。 当你在运行时请求特定资源时,CLR 将根据用户区域性查找该资源。 如果找不到该区域性对应的附属程序集,则使用默认区域性的资源。

创建本地化异常消息:

  1. 创建一个名为“Resources”的新文件夹来保存资源文件。

  2. 向其中添加新的资源文件。 若要在 Visual Studio 中执行此操作,请在“解决方案资源管理器”中右键单击该文件夹,然后选择“添加”>“新项”>“资源文件”。 将该文件命名为“ExceptionMessages.resx”。 这是默认的资源文件。

  3. 为异常消息添加名称/值对,如下图所示:

     

    80f5eb3f84a107c43580385337b3bb3e.jpeg

  4. 为法语添加新的资源文件。 将其命名为“ExceptionMessages.fr-FR.resx”。

  5. 再次为异常消息添加名称/值对,但使用法语值:

     

    d5070f6013b42391cc5f41e25b0a2209.jpeg

  6. 生成项目后,生成的输出文件夹应包含 fr-FR 文件夹,其中具有 .dll 文件,它是附属程序集。

  7. 使用如下所示代码抛出异常:

    var resourceManager = new ResourceManager("FULLY_QUALIFIED_NAME_OF_RESOURCE_FILE", Assembly.GetExecutingAssembly());
    throw new StudentNotFoundException(resourceManager.GetString("StudentNotFound"), "John");
    

     备注

    如果项目名称为 TestProject,并且资源文件 ExceptionMessages.resx 位于项目的 Resources 文件夹中,则资源文件的完全限定名称为 TestProject.Resources.ExceptionMessages

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176403.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot文件在线预览实现

kkFileView - 在线文件预览,一款成熟且开源的文件文档在线预览项目解决方案。 详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages 中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md…

【ARFoundation学习笔记】点云与参考点

写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。主要目的是为了加深记忆。其中难免出现纰漏,更多详细内容请阅读原文以及官方文档。 汪老师博客 文章目录 点云新建点云 参考点参考点的工作原理何时使用参考点使用参考点…

如何在Ubuntu 23.10部署KVM并创建虚拟机?

正文共:1114 字 21 图,预估阅读时间:2 分钟 我们之前对OpenStack醉过一次简单介绍(什么是OpenStack?),OpenStack本身是一个云管理平台,它本身并不提供虚拟化功能,而是依赖…

⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 内连接、外连接、自连接、子查询、多表查询 ⑧…

03-学成在线内容管理模块之课程查询

课程查询 需求分析 教学机构人员点击课程管理按钮进入课程查询界面,在课程列表页面输入查询条件查询课程的信息 当不输入查询条件时默认会全部课程信息,输入查询条件会查询符合条件的课程信息,约束条件是本教学机构查询本机构的课程信息 数据模型(model工程) 课程查询功能…

Kibana:使用 “链接” 面板简化 Kibana 仪表板导航 - Links panel

作者:Teresa Alvarez Soler 我们很高兴地宣布 Kibana 仪表板的最新功能版本:链接面板(Links panel),这是在仪表板之间组织和导航的简单方法。 此功能在 Kibana 8.11 的技术预览版中提供。 有时你可能希望创建多个主题…

深入探讨Linux中的文本文件查看命令

目录 前言1 cat命令2 less命令3 more命令4 head命令5 tail命令6 总结 前言 在Linux系统中,文本文件是日常工作中不可或缺的一部分,无论是配置文件、日志文件还是代码文件,都需要用到文本文件查看命令。在本文中,我们将深入研究一…

SLF4J: Class path contains multiple SLF4J bindings.

问题截图 问题原因 这里就是由于hbase 安装路径下的一个文件和hadoop安装路径下的文件起冲突了 解决办法 我的路径: 这个一定要看自己电脑上的路径 /usr/local/hbase/lib/client-facing-thirdparty/ slf4j-log4j12-1.7.25.jar更名为: /usr/local/hb…

智能供应链中的预测算法:理论与实践

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 智能供应链已经成…

如何安装WampServer并结合内网穿透工具实现公网访问内网服务

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. WampServer下载安装二. WampServer启动三. 安装cpolar内网穿透3.1 注册账号…

【Git企业开发】第七节.多人协作开发

文章目录 前言 一、多人协作开发 1.1 多人协作一 1.2 多人协作二 1.3 远程分支删除后,本地 git branch -a 依然能看到的解决办法 总结 前言 一、多人协作开发 1.1 多人协作一 目前,我们所完成的工作如下: 基本完成Git的所有本地库的相关操作&#xff0…

python读取txt格式的点云文件,可视化显示,保存ply格式

在计算机视觉和三维几何处理中,点云是一种重要的数据表示形式。点云由许多离散的点组成,每个点都有三维坐标,通常还包括其他信息。 空格形式的点云文件 import open3d as o3ddef read_txt_space(txt_file):# 读取点云数据pcd o3d.io.read_p…