首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ArgumentException中根据条件添加更多变量

在ArgumentException中根据条件添加更多变量,可以通过创建自定义异常类来实现。

首先,可以创建一个继承自ArgumentException的自定义异常类,例如CustomArgumentException。在CustomArgumentException中,可以添加额外的属性来存储更多的变量。

以下是一个示例代码:

代码语言:txt
复制
using System;

public class CustomArgumentException : ArgumentException
{
    public string AdditionalVariable1 { get; }
    public int AdditionalVariable2 { get; }

    public CustomArgumentException(string paramName, string message, string additionalVariable1, int additionalVariable2)
        : base(message, paramName)
    {
        AdditionalVariable1 = additionalVariable1;
        AdditionalVariable2 = additionalVariable2;
    }
}

然后,在调用的地方根据条件抛出CustomArgumentException异常,并传入相应的变量值。

代码语言:txt
复制
public void SomeMethod(string param1, int param2)
{
    if (param1 == null)
    {
        throw new CustomArgumentException(nameof(param1), "param1 cannot be null", "AdditionalValue1", 10);
    }

    if (param2 <= 0)
    {
        throw new CustomArgumentException(nameof(param2), "param2 must be greater than 0", "AdditionalValue2", 20);
    }

    // 其他逻辑
}

在上述示例中,根据条件添加了两个额外的变量AdditionalVariable1和AdditionalVariable2,并在构造函数中进行初始化。通过这种方式,可以根据条件为每个异常添加特定的变量,并在处理异常时获取这些变量的值。

注意:本答案中没有提及特定的腾讯云产品,因此没有相关产品介绍链接。如有需要,您可以参考腾讯云的官方文档来选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在keras添加自己的优化器(adam等)

Anaconda3\envs\tensorflow-gpu\Lib\site-packages\tensorflow\python\keras 3、找到keras目录下的optimizers.py文件并添加自己的优化器...找到optimizers.py的adam等优化器类并在后面添加自己的优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...Adamsss, self).get_config() return dict(list(base_config.items()) + list(config.items())) 然后修改之后的优化器调用类添加我自己的优化器...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己的优化器...(adam等)就是小编分享给大家的全部内容了,希望能给大家一个参考。

45K30

WPF 触摸下如何给 StylusPointCollection 添加

本文告诉大家如何在触摸下给 WPF 的 StylusPointCollection 添加新的点 在自己默认创建的 StylusPointCollection 里面添加点是十分简单的,如以下代码,可以非常简单添加到集合...System.ArgumentException:“StylusPointDescriptions 不兼容。...因为只有一些触摸框才会给触摸点带上更多的额外数据,宽度高度等信息,在这些触摸框下的设备将由于创建的 StylusPoint 拿不到的额外描述信息,从而失败 可选的添加点到 StylusPointCollection...stylusPoint.Y = 2; stylusPointCollection.Add(stylusPoint); } 由于 StylusPoint 是一个结构体,根据...结构体获取的时候都是一次浅拷贝,也就是通过 stylusPointCollection[0] 所获取返回的 StylusPoint 已经和原本在集合里面的点是两个不同的点了,对 stylusPoint 局部变量的任何更改都不会影响到原本的点

17910
  • 退出屏保前玩一把游戏吧!webBrowser中网页如何调用.NET方法

    在网页,我们需要在屏保退出的逻辑部分添加一段 JavaScript 代码,用于调用 .NET 方法。...新的功能提供了更多的可玩性,用户可以根据自己的喜好设计各种有意思的屏保,这样也是满足了输入密码退出这个功能的实现基础。...在等待期间,可以展示一些有趣的事物,名言警句、美丽的图片或者实时新闻等。 通过这些有趣的屏保设计方案,用户在退出屏保时可以享受到更多互动和趣味性。...人生有时就是这样,在现实生活,我们往往会面临两种选择:努力拼搏还是躺平投降。有时候,努力拼搏的结果并不一定能让我们达到预期的目标,反而可能让我们陷入更深困境,带来更多的困扰。...最后 本文向大家介绍了如何在 webBrowser 的网页调用 .NET 方法,以及如何在屏保程序中加入游戏元素。通过这些技巧,我们可以为用户带来更有趣的屏保体验。

    22510

    C# 参数验证方式的演变

    通常,我们一般都是在方法开始的地方进行条件判断,然后抛出合适的异常,这是最普通和通用的做法,但是在.NET,利用一些语言特性和类库,可以使用一些其他的方式将我们从复杂繁琐的工作解放出来。...可以看到在.NET随着版本的演化,逐步添加了很多声明式编程(Declarative programming)的风格,这样的代码会直接表明what而不是how,从而使得代码更加清晰和易维护。...这样,我们在实例化Person类,然后调用框架相应的方法,如果不满足条件,就会抛出相应的异常。...,Contract的这些静态方法方法包括 Requires:函数入口处必须满足的条件 Ensures:函数出口处必须满足的条件 Invariants:所有成员函数出口处都必须满足的条件 Assertions...但是Contract有更多和更强大的功能: Contracts的意图更加清晰,通过不同的Requires/Ensures等等调用,代表不同类型的条件,比单纯的Assert更容易理解和进行自动分析 Contracts

    1.5K20

    C#7.0 新增功能

    C# 7.0 向 C# 语言添加了许多新功能 01 out 变量 支持 out 参数的现有语法已在此版本得到改进。...可以在每个 case 标签测试 switch 表达式的类型。 与 is 表达式一样,可以为该类型指定一个新变量。 可以添加 when 子句以进一步测试该变量条件。...可以在 C# 的模式匹配中了解有关模式匹配的更多信息。 05 Ref 局部变量和返回结果 此功能允许使用并返回对变量的引用的算法,这些变量在其他位置定义。...它们包括条件表达式、null 合并表达式和一些 lambda 表达式。 添加 expression-bodied 成员将添加更多位置,在这些位置,throw 表达式会很有用。...这些方法包括: 条件运算符。 下例使用 throw 表达式在向方法传递空字符串数组时引发 ArgumentException

    1.4K10

    写让别人能读懂的代码

    所以我们要: 写让别人能读懂的代码 写可扩展的代码 写可测试的代码(代码应该具备可测试性,对没有可测试性的代码写测试,是浪费生命的表现) 其中2,3点更多强调的是面向对象的设计原则。...而本文则更多关注于局部的代码问题,本文通过举例的方式,总结平时常犯的错误和优化方式。...isNotRemeberMe) { } 重构后: if (isRemeberMe) { } 不管你有没有见过这样的条件,反正我见过。见到这样的条件判断,我顿时就晕了。...我们只需要在ViewModel添加一个Bool IsAdult{get{return ….}}即可,DomainModel完全不用变化。...五.利用先进的生产工具 以vs插件的Reshaper为例,本文列举的大部分反例,Reshaprer均能给予不同程度的提示。

    91750

    C#主构造函数

    主构造函数是类的主要构造函数,它负责执行所有必要的初始化工作。这篇文章将深入探讨C#主构造函数的概念、重要性、设计原则以及如何在实际编程实现它们。...这可以通过在构造函数设置所有属性的最终值来实现。 异常处理:主构造函数应该能够处理任何在初始化过程可能发生的异常。 简洁性:主构造函数应该尽可能简洁,只包含必要的初始化逻辑。...public Person(string name, int age) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException...主构造函数与工厂方法 有时,对象的创建可能涉及复杂的逻辑,或者需要根据某些条件创建不同类型的对象。...PersonFactory类提供了一个静态方法CreatePerson,它根据年龄条件创建不同类型的Person对象。

    63700

    如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    首先我们思考一下如何在我们的购物车中表达出用户的概念,购物车需要知道用户的所有信息吗?...购物车明细和商品之间的关系也是一样,每次需要从远程上下获取到最新的商品信息(价格等),故也仅需保持一个唯一标识的引用。...D.隐藏技术细节,持久化与缓存之间的依存关系。 2.不要把领域服务作为“银弹”。过多的非必要的领域服务会使项目从面向对象变成面向过程,导致贫血模型的产生。...仓储的普遍使用方式如下:   A.包含保存、删除、指定条件的查询(当然在大型项目中可以考虑采用CQSR来做,把查询和数据操作分离)。   ...cart; } }   这样应用层就真正变成了一个讲故事的人,清晰的表达出了“用户购买商品的整个过程”,把商品购物车的商品转换成购物车明细 --> 获取用户的购物车 --> 添加购物车明细到购物车

    91050

    C#知多少 | 每个版本都更新了什么?

    5Null 条件运算符 Null 条件运算符使 null 检查更轻松、更流畅 。 将成员访问 . 替换为 ?.: var first = person?....每当需要变量、属性或成员字段的名称时,这是让工具正常运行的好办法,说白了就是更好的重构: if (IsNullOrWhiteSpace(lastName)) throw new ArgumentException...", [500] = "The web server can't come out to play today." }; C#7.x 中新增的功能 1out 变量 可以在方法调用的参数列表声明...请看一个电子商务网站的示例,该网站必须根据买家地址计算销售税。 这种计算不是 Address 类的核心职责。 它会随时间变化,可能比地址格式的更改更频繁。...使用元组模式,可根据表示为元组的多个值进行切换。

    1.8K20

    通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)

    那篇文章会更多的偏向于源码解读,而本文更多地偏向于分析触摸失效的过程。...具体需要的条件为: 运行 任意的 WPF 程序 插拔带有触摸的 HID 设备(可以是物理插拔,也可以是驱动或软件层面的插拔) 以上虽说是必要条件,但如果要提高触摸失效的复现概率,需要制造一个较高的 CPU...占用: 当前系统中有 较高的 CPU 占用率 可能还有一些尚不确定的条件: 是否对 .NET Framework 的版本有要求?...以上的问题分析ArgumentException 异常几乎可以肯定是线程安全问题所致;COMException 不能确定;而 GetPenEventMultiple 的参数 handles 实际上是用来进行非托管和托管代码线程同步用的...关于 dnSpy 的更多使用,可以阅读: 断点调试 Windows 源代码 - lindexi 神器 dnSpy,无需源码也能修改 .NET 程序 - walterlv 本文会经常更新,请阅读原文

    88010

    VisualStudio 扩展开发 添加输出窗口

    小伙伴都用过 VisualStudio 都在输出窗口看到不同的子窗口, gitlab 的输出窗口,调试的输出窗口,本文告诉大家如何写插件在输出窗口里面添加一个窗口 在添加菜单 告诉大家如何简单在 VisualStudio...的工具添加一个按钮,通过用户点击按钮才能使用插件 于是请先看一下如何添加按钮的博客,这样本文就可以直接开始告诉大家在这篇博客 用到方法里面快速添加一个自定义的输出窗口 在输出窗口里面的窗口在 VisualStudio...官方的命名是 Pane 也就是本文是告诉大家如何在 VisualStudio 的 OutputWindow 添加一个 Pane 在这个 Pane 里面输出 在 VisualStudio 的 OutputWindow...通过 IVsBuildableProjectCfg 接口可以自动绑定输出到 Build 调用编译。...OutputWindowPane pane = panes.Item(title); } catch (ArgumentException)

    69310

    必备 .NET - C# 异常处理

    首先,它支持异常条件,即能提供表达式通过在堆栈展开之前进入 catch 块,筛选出异常。其次,它在 catch 块内添加了异步支持。在将异步添加到 C# 5.0 语言时,这是无法实现的。...图 2 展示了如何在不重置堆栈跟踪信息或不使用空的 throw 语句的情况下,重新引发异常。...对于 C# 6.0 及更高版本,catch 块可以使用额外的条件表达式。C# 6.0 支持条件子句,不再限制 catch 块是否只能根据异常类型进行匹配。...例如,附带异常条件的 System.ArgumentException 类型 catch 现在可以显示在更具体的 System.ArgumentNullException 类型之前,即使后者源自前者,也是如此...实际上,任何有关空的 throw 语句的条件检查都可以用代码进行标记,并且是可以避免的。请考虑添加异常条件,支持使用空的 throw 语句,在进程终止前保持可变的状态除外。

    2.4K60

    了解加权随机化算法,在游戏中进行概率计算,抽取SSR五星卡牌指日可待

    我自己使用它来为 RPG 的敌人类型创建模板,并根据模板定义的权重为统计数据分配点数。   简单地使用值类型作为通用参数初始化一个 WeightedRandomizer 实例。...AddOrUpdateWeightInt:负责将权重及权重对象添加进概率池子。 GetNext():从概率池子根据概率返回对应的对象。...1.首先针对不同的泛型对象配置好对应的概率(使用列表或者字典配置),或者直接在代码添加对象及概率都可以。...(w.Go, w.Range); } 4.然后在代码需要使用这个概率的时候调用API:WeightedRandomizer.GetNext()即可从配置的对象根据概率抽取并返回该对象...使用ScriptableObject的好处是我们可以在任何在有需要使用到此概率获取的时候拿到概率对应的SO,直接使用SO的数据获取即可,SO就相当于一个保存数据的载体。

    1K20

    如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    二、明确业务细节 电商市场越来越成熟,竞争也越来越激烈,影响客户流量的关键因素之一就是价格,运营的主要打法之一也是价格,所以是商品价格是一个在电商很重要的一环。...正因为如此也让促销演变的越来越复杂,那么如何在编码上花点心思来尽可能的降低业务的复杂化带来的影响和提高可扩展性来拥抱变化就变得很重要了。...并且相同促销商品在购物车商品展示的方式是在一组。 三、建模 根据上面的业务描述先找到其中的几个领域对象,然后在做一些适当的抽象,得出下面的UML图(点击图片可查看大图): ?...【图1】 四、实现   建模完之后下面的事情就容易了,先梳理一下我们的业务处理顺序:   1.根据购买上下文传入的购物车信息获取产品的相关促销。   2.先处理单品促销。   ...随后根据上面业务处理顺序,发现整个处理的链路比较长,那么这里我决定定义一个值对象来承载整个处理的过程。

    52330

    CA1065:不要在意外的位置引发异常

    尝试添加或删除事件处理程序时,事件不应引发异常。...例如,如果 Equals 传递两个不匹配的类型,则应只返回 false 而不是引发 ArgumentException。...否则,可能会丢失哈希表的项。 采用参数的 GetHashCode 版本可能会引发 ArgumentException。 但是,Object.GetHashCode 应始终不会引发异常。...从静态构造函数引发异常应具备充分的理由(安全问题)。 终结器 从终结器引发异常将导致 CLR 快速失败,从而中断过程。 因此,应始终避免在终结器引发异常。...因此,从 Dispose 显式引发异常将强制用户在 finally 子句内添加异常处理。 Dispose (false) 代码路径应始终不会引发异常,因为 Dispose 几乎都是从终结器调用的。

    63520

    .NET单元测试的艺术-1.入门

    作为一名.NET程序员,如何在VS安装NUnit并能够在VS中直接运行测试呢?   Step1.在NuGet中找到NUnit并安装 ?   ...添加一个类,取名为LogAnalyzerTests.cs。   ...四、更多的NUnit 4.1 参数化重构单元测试   NUnit中有个叫做 参数化测试(Parameterized Tests)的功能,我们可以借助[TestCase]标签特性来重构我们的单元测试:...五、小结   这一篇作为入门,带领大家领略了一下单元测试的概念,如何编写单元测试,如何在VS应用NUnit进行单元测试。相信大家以前都用过MSTest,而我们这里却使用了NUnit。...但是,如果我们要测试的方法依赖于一个外部资源,文件系统、数据库、Web服务或者其他难以控制的东西,那又该如何编写测试呢?

    2.1K20

    免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)

    在这个组件介绍系列,只为简单的介绍组件的背景和简单的应用,读者在阅读时可以结合官网的相关介绍和在本地实际操作。    ...相关的组件功能非常强大,在笔者的介绍只是提及到简单的应用,需要了解更多的操作和特性,可以根据官网介绍,或者查看DLL文件的相关类和方法,以此来扩展相关的业务需要。    ...SharpZipLib是一个完全在C#为.NET平台编写的Zip,GZip,Tar和BZip2库。...它实现为一个程序集(可安装在GAC),因此可以轻松地集成到其他项目(任何.NET语言)。...组件的功能是很强大的,如何在项目中使用组件,完成我们在项目中需要实现的功能,这就是对每个开发者提出了要求,需要我们仔细的去考虑。

    2.1K60
    领券