Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ArgumentException vs ArgumentNullException?

ArgumentException vs ArgumentNullException?

提问于 2018-01-31 15:43:39
回答 2关注 0查看 443

正在重构一些代码:

代码语言:txt
AI代码解释
复制
FooResult Foo(FooArgs args) { ... }

使用以下结构检查空值:

代码语言:txt
AI代码解释
复制
if (parameter1 == null)
    throw new ArgumentNullException(“parameter1”);
if (parameter... == null)
    throw new ArgumentNullException(“parameter...”);
if (parameterN == null)
    throw new ArgumentNullException(“parameterN”);

ArgumentNullException属性数:

代码语言:txt
AI代码解释
复制
if (args.Property1 == null)
    throw new ArgumentNullException(“args.Property1”);
if (args.Property... == null)
    throw new ArgumentNullException(“args.Property...”);
if (args.PropertyN == null)
    throw new ArgumentNullException(“args.PropertyN”);

或者ArgumentExceptionFooArgs参数:

代码语言:txt
AI代码解释
复制
if (args.Property1 == null)
    throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
    throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
    throw new ArgumentException(“Property2 cannot be null.”, “args”);

回答 2

逆鳞若光

发布于 2018-02-01 00:52:48

可以考虑将验证FooArgs转移到FooArgs类本身。如果这个类是专门为移动参数而设计的,那么它可能是无效的,在这种情况下,可以允许它的构造函数进行验证。

伤旧

发布于 2018-02-01 00:34:52

需要添加一个检查,以确保args本身是非空的

代码语言:txt
AI代码解释
复制
if (args == null)
    throw new ArgumentNullException(“args”);
if (args.Property1 == null)
    throw new ArgumentException(“Property1 cannot be null.”, “args”);
if (args.Property... == null)
    throw new ArgumentException(“Property... cannot be null.”, “args”);
if (args.PropertyN == null)
    throw new ArgumentException(“Property2 cannot be null.”, “args”);
和开发者交流更多问题细节吧,去 写回答
相关文章
CLR中的程序集加载
彭泽0902
2018/01/04
1.1K0
编写前置和后置条件的连贯接口库:CuttingEdge.Conditions
当调用一个方法时,在其执行之前期望其处于特定状态; 也需要完成一些工作之后验证结果的状态。 这些假设被称为前置条件(pre-conditions )和 后置条件(post-conditions)。开源项目CuttingEdge.Conditions   是一个提供一个 fluent 接口用于指定预生成和 post-conditions的库 。 (fluent 接口是通过使用的描述性的名称和方法链的可读性会最大化一个 API 设计样式)。下面是一个用CuttingEdge.Conditions的例子: pub
张善友
2018/01/19
5560
C#文件安全管理解析
彭泽0902
2018/01/04
1.6K0
C#快速读写文件
一、写入 //在应用程序当前目录下的File1.txt文件中追加文件内容,如果文件不存在就创建,默认编码 File.AppendAllText("Fil
张果
2018/01/04
3.7K0
NetCore3.0实现自定义IOC容器注入
在之前的ASP.NET MVC实现依赖注入一文中,通过替换默认的ControllerFactory来达到对Controller生命周期的拦截,实现自定义的对象注入,在NetCore3.0中需要重新实现,步骤如下:
code2roc
2023/07/19
2910
通用.NET数据库访问类SqlHelper
通用.NET数据库访问类SqlHelper using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collections; using System.Configuration; /*解释: * --------连接字符串属性-------- * "Server"或"Data Source"属性:服务器名 * "Database"或"Initial Catalog"属性
摘繁华
2021/12/27
3.1K0
自定义Dictionary支持线程安全
本文转载:http://www.cnblogs.com/kiddo/archive/2008/09/25/1299089.html
跟着阿笨一起玩NET
2018/09/19
1.1K0
C#的SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
using System; using System.Data; using System.Text.RegularExpressions; using System.Xml; using System.IO; using System.Collections; using System.Data.SQLite; namespace DBUtility.SQLite { /// <summary> /// SQLiteHelper is a utility class similar to
艳艳代码杂货店
2021/10/27
2K0
使用 C# 9 的records作为强类型ID - 路由和查询参数
但是在强类型id真正可用之前,还有一些问题需要解决,比如,ASP.NET Core并不知道如何在路由参数或查询字符串参数中正确的处理它们,在这篇文章中,我将展示如何解决这个问题。
全球技术精选
2021/01/21
1.9K0
使用 C# 9 的records作为强类型ID - 路由和查询参数
免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
彭泽0902
2018/01/04
2.1K0
免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
探索C#之6.0语法糖剖析
自动属性默认初始化 使用方法: public string Name { get; set; } = "hello world"; 为了便于理解使用2.0语法展示,编译器生成代码如下: public class Customer { [CompilerGenerated] private string kBackingField = "hello world"; public Customer() { this.kBackingField = "hello world"; } publi
蘑菇先生
2018/05/21
1.6K0
《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(下)
HTTP 协议能够在客户端和服务器之间传递信息,特点是以明文的方式发送内容,并不提供任何方式的数据加密
郑子铭
2021/01/13
5170
《ASP.NET Core 与 RESTful API 开发实战》-- (第8章)-- 读书笔记(下)
如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备
最近实在太忙,上周停更了一周。按流程一步一步走到现在,到达了整个下单流程的最后一公里——结算页的处理。从整个流程来看,这里需要用户填写的信息是最多的,那么在后端的设计中如何考虑到业务边界的划分,和相互之间的交互复杂度,又是我们需要考虑的地方。总体来说本篇讲述的内容在前几篇都有涉及,所以这次一次性处理的业务比较多,已经比较熟练的看官可以跳过本篇。
Zachary_ZF
2018/09/10
7270
如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备
解析Exception和C#处理Exception的常用方法总结
该文介绍了如何在C#中实现异常处理,包括定义异常类型、抛出异常、异常处理和日志记录等方面的内容。
彭泽0902
2018/01/04
2.3K0
.net 5.0 配置文件组件之JsonProvider源码解析
1、本文主要介绍下.net core 5.0的配置文件组件JsonProvider源码核心逻辑.
郑小超.
2022/05/07
5600
C#的扩展方法解析
本文主要对 C# 扩展方法进行了详细的介绍,包括扩展方法的声明方式、使用方式以及意义和原理。同时,还提供了一个枚举的扩展方法示例。
彭泽0902
2018/01/04
2K0
实现一个 WPF 版本的 ConnectedAnimation
2017-12-25 11:44
walterlv
2018/09/18
6670
实现一个 WPF 版本的 ConnectedAnimation
CAP项目集成带身份和证书验证的MongoDB
最近,在使用CAP事件总线时,碰到了这样一个需求:微服务采用的是MongoDB,而且还是带身份验证 和 SSL根证书验证的。由于目前网上能找到的资料,都是不带身份验证的MongoDB,现在网络信息安全越来越被重视,那么就需要自己研究一番了。
Edison Zhou
2023/09/26
2080
CAP项目集成带身份和证书验证的MongoDB
ASP.NET MVC Preview生命周期分析
做ASP.NET WebForm开发都知道,ASP.NET有复杂的生命周期,学习ASP.NET MVC就要深入理解它的生命周期。今天从CodePlex上下载了ASP.NET Preview 2 的源代码,还有两个程序集Routing与Abstractions并未发布,不过这两个程序集的类并不多,可以用NET反编译工具 Reflector解开来看看,可惜这两个程序集用的是VS2008使用.net 3.5开发的,用了c# 3.0的很多特性,Reflector反编译不完全。 ASP.NET MVC通过HttpMo
张善友
2018/01/30
1.5K0
点击加载更多

相似问题

ArgumentException与ArgumentNullException?

2276

“static const”vs“#define”vs“enum”?

2420

typeof!==“undefined”vs.!= null?

2383

VS Code SCF部署失败?

0255

C ++:“std :: endl”vs“\ n”?

2278
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
web前端擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文