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

C# Enum设计和使用的相关技巧

FlagsAttribute 和 Enum 的准则: 只有要对数值执行按位运算(AND、OR、XOR)时才对枚举使用 FlagsAttribute 自定义属性。...将负数定义为标志枚举常量时应谨慎,因为很多标志位置都可能设置为 1,这可能使您的代码产生混淆并易于发生代码错误。...将 None 用作值为零的标志枚举常量的名称。在按位 AND 运算中,不能使用 None 枚举常量测试标志,因为所得的结果始终为零。...如果明显存在应用程序需要表示的默认情况,请考虑使用值为零的枚举常量表示默认值。如果不存在默认情况,请考虑使用值为零的枚举常量(这意味着该情况不由任何其他枚举常量表示)。...此外,如果枚举常量范围中的所有值都有效,还可以对第一个和最后一个枚举常量执行范围检查。 不要指定保留将来使用枚举常量。 在定义采用枚举常量作为值的方法或属性时,应考虑对该值进行验证。

1.1K70
您找到你想要的搜索结果了吗?
是的
没有找到

protocol buffers 序列化数据

如果在 .proto 中使用这些保留数字中的一个,Protocol Buffers 编译的时候会报错。 同样,您不能使用任何以前 Protocol Buffers 保留的一些字段号码。 2....如果将来的任何用户试图使用这些字段标识符,Protocol Buffers 编译器将会报错。...枚举中的保留值 如果您通过完全删除枚举条目或将其注释掉来更新枚举类型,未来的用户可以在对该类型进行自己的更新时重新使用数值。...如果将来的任何用户试图使用这些字段标识符,Protocol Buffers 编译器将会报错。您可以使用 max 关键字指定您的保留数值范围上升到最大可能值。 7....您可能需要重命名该字段,可能会添加前缀“OBSOLETE_”,或者标记成保留字段号 reserved,以便将来的 .proto 用户不会意外重复使用该号码。

1.1K30

核心编程笔记之十-Py

10.1 什么是异常 10.1.1 错误 错误时语法或是逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译 当Python检测到一个错误时,解释器就会支出当前流已经无法继续执行下去...使用错误的参数调用这个函数: >>> safe_float('xyz') 'could not convert non-number to float' >>> safe_float(()) 'object...exceptions.TypeError'> >>> print diag float() argument must be a string or a number 我们首先在一个try语句块中引发一个异常,随后简单的忽略了这个异常,但保留错误的信息...exclass,args同上,但同时提供的异常参数args,可以是一个参数也可以元祖 raise exclass(args)同上 raise exclass,args, tb同上,但提供一个追踪对象tb使用...raise instance通过实例触发异常 raise string触发字符串异常 raise string,args触发伴随着args raise string,args,tb同上,但提供一个追踪对象tb使用

84220

Protocol Buffers

32-bit integer,但因为枚举使用变长编码,所以不推荐使用负数作为枚举值,因为这会带来效率问题。...因此,您应该为非常频繁出现的消息元素保留数字1到15。请记住为将来可能添加的常用元素留出一些空间。最小的标识号可以从1开始,最大到2^29 - 1,或 536,870,911。...不可以使用其中的[19000-19999]的标识号, Protobuf协议实现中对这些进行了预留。如果非要在.proto文件中使用这些预留标识号,编译时就会报警。同样你也不能使用早期保留的标识号。...string query = 1; int32 page_number = 2; int32 result_per_page = 3;}message SearchResponse { ...}4.4、保留字段保留变量不被使用...如果将来的任何用户尝试使用这些字段标识符,协议缓冲编译器将会报错。

1.8K20

对python中list的五种查找方法说明

Python中是有查找功能的,五种方式:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。...Raises ValueError if the value is not present. 我曾经使用过的大多数地方index,我现在使用列表推导或生成器表达式,因为它们更具有推广性。...因此,如果您正在考虑使用index,请查看这些出色的python功能。 如果元素不在列表中,则抛出 如果项目不存在则调用index结果ValueError。...[1, 1].index(2) Traceback (most recent call last): File "<stdin ", line 1, in <module ValueError: 2...作为列表理解: [i for i, j in enumerate([‘foo’, ‘bar’, ‘baz’]) if j == ‘bar’] 这里还有另一个小解决方案itertools.count()(与枚举几乎相同

1.6K30

python 异常处理

异常 广义上的错误分为错误和异常 错误指的是可以人为避免 异常是指在语法逻辑正确的而前提下,出现的问题 在python中,异常是一个类,可以处理和使用 异常的分类 BaseException 所有异常的基类...FutureWarning 关于构造将来语义会有改变的警告 GeneratorExit generator.close()方法被调用的时候 ImportError 导入模块失败的时候 IndexError...可疑的语法的警告 IndentationError 缩进错误 TabError Tab和空格混合使用 SystemError Python编译器系统错误 SystemExit Python编译器进程被关闭...TypeError 不同类型间的无效操作 UnboundLocalError 访问一个未初始化的本地变量(NameError的子类) UnicodeError Unicode相关的错误ValueError...) UserWarning 用户代码生成的警告 ValueError 传入无效的参数 ZeroDivisionError 除数为零 l = [1,2,3,4,5] # 除零错误 num = int(input

2.3K87

python学习笔记8.1-异常处理

python内置了我们常用到的异常处理机制,比如断言,在编程的过程中,合理的使用这些异常处理机制,能帮我们减少很多调试代码的时间。本文主要介绍一些异常处理机制的使用。 1....使用try…except…finally…错误处理机制 python中最常用的就是try…这种机制,需要注意的是:try, except, finally 三部分是独立的,所以没有except或者finally...异常的类型 在python标准中,定义了一些标准的异常类型,这些类型可以直接使用。...一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode...关于被弃用的特征的警告 FutureWarning 关于构造将来语义会有改变的警告 OverflowWarning 旧的关于自动提升为长整型(long)的警告 PendingDeprecationWarning

75060

Python自动化运维之异常处理

1、异常 异常就是非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...关于构造将来语义会有改变的警告 OverflowWarning 旧的关于自动提升为长整型(long)的警告 PendingDeprecationWarning 关于特性将会被废弃的警告 RuntimeWarning...('Invalid value') #或者 raise ValueError,'Invalid value' testRaise(0) traceback:这个参数用于追踪异常对象,一般很少使用。...但是这种异常信息并不适合一般用户阅读,所以会使用自定义的异常信息。但是仍然会将原有的异常信息保留起来,用于后期的异常分析。

1K30

Python3 常见错误和异常处理

对类型无效的操作 使用+拼接的时候 必须使用字符串,或者将数字转化成字符串 ValueError 传入无效的参数 如果一个函数接收到的值类型正确,但是值不合法时产生 UnicodeError Unicode...相关的错误 ValueError的一个子类,出现Unicode问题时产生 UnicodeDecodeError Unicode 解码时的错误 \ UnicodeEncodeError Unicode...关于构造将来语义会有改变的警告 \ OverflowWarning 旧的关于自动提升为长整型(long)的警告 \ PendingDeprecationWarning 关于特性将会被废弃的警告 \ RuntimeWarning...运行检测到的错误被称为异常。 捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。...as e: # 捕捉value错误的子异常 print("ValueError:",e) except Exception as e: # 如果上面两个异常没有捕获到,那么使用

1.5K20

读书笔记

应该用枚举来表示状态机的状态,传递给方法的选项以及状态码等值,给这些值起个易懂的名字; 如果把传递给某个方法的选项表示为枚举类型,而多个选项又可以同时使用,则将各选项值定义为2的幂,以便通过按位或操作将其组合起来...; 不要单用现代战争下划线做私有方法的前缀,因为这种做法是预留给苹果使用的; 3.7 理解 OC 错误类型 只有发生了可使整个应用程序崩溃的严重错误时,才应使用异常; 在错误不那么严重的情况下,可以指派...“委托方法”来处理错误,也可以把错误信息放在 NSError对象里,经由“输出参数”返回给调用者; 如果出现非致命的错误时,则可以令方法返回 nil/0 或使用 NSError 来表明其中有错误发生;...并且 NSEnumerator 有多种枚举选择,如反向遍历等,使用时可以根据需要选择不同的枚举器; 快速遍历 快速遍历其实就是在基本 for循环的基础上加了个 in关键字: for(id object...不过,除非 NSTimer 将来在公共接口里提供此功能,否则必须创建分类,将相关实现代码加入其中;

47520

python异常报错详解

对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...当使用2元组创建此类型的异常时,第一个项目在实例的errno属性上可用(假定为错误编号),第二个项目可用于该 strerror属性(通常是关联的错误消息)。元组本身也可以在args属性上使用。...异常UnicodeError 当与Unicode相关的编码或解码错误发生时引发。它是一个子类ValueError。 UnicodeError具有描述编码或解码错误的属性。...异常PendingDeprecationWarning 关于将来不推荐使用的功能的警告的基类。 异常SyntaxWarning 关于可疑语法的警告的基类。...异常FutureWarning 关于将来会在语义上改变的构造的警告的基类。 异常ImportWarning 关于模块进口中可能出现的错误的警告的基础类。

4.6K20

解决 ValueError: feature_names mismatch training data did not have the following f

​​ValueError: feature_names mismatch training data did not have the following fields​​ 的错误。...错误的原因​​ValueError: feature_names mismatch training data did not have the following fields​​ 错误通常在以下情况下出现...移除测试数据中没有的特征列如果测试数据中包含了训练数据中没有的特征列,可以使用 ​​test = test[train.columns]​​ 将测试数据的特征列进行筛选,只保留与训练数据相同的特征列。...pythonCopy code# 将测试数据的特征列进行筛选,只保留与训练数据相同的特征列test = test[train.columns]4....但在训练模型时,遇到了 ​​ValueError: feature_names mismatch training data did not have the following fields​​ 的错误

22530

CA1700:不要用“Reserved”命名枚举

规则说明 此规则假定当前不使用名称中包含“reserved”的枚举成员,而是将其作为一个占位符,以在将来的版本中重命名或移除它。 重命名或移除成员是一项重大更改。...此外,由于预留成员显示在对象浏览器和智能集成开发环境中,因此他们可能会造成混淆,以致于不知道实际使用哪些成员。 在将来的版本中,向枚举添加新成员,而不是使用预留成员。...在少数情况下,添加成员是一项中断性变更,即使原始成员保留其原始值也是如此。...因此,如果新成员必须从现有方法返回,或者由于反射的使用不当而发生已知的应用程序不兼容,则唯一的非中断性解决方案是: 添加包含原始成员和新成员的新枚举。...使用 System.ObsoleteAttribute 属性标记原始枚举。 对于公开原始枚举的任何外部可见类型或成员,请执行相同的过程。 如何解决冲突 若要解决此规则的冲突,请删除或重命名该成员。

47000

11 . Python3之异常,调试和测试

pass # 语法错误示范四 print(haha) 2.逻辑错误 #TypeError:int类型不可迭代 for i in 3: pass #ValueError num=input...KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...多分支异常与万能异常 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么骚年,大胆去做吧,只要有一个Exception就足够了....在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的。 我们来编写一个Dict类,这个类的行为和dict一致,但是可以通过属性来访问,用起来就像下面这样:

1.4K40

Datawhale组队学习 -- Task 3: Python的异常类型总结和捕获语句

IndentationError:缩进错误导致的异常 TabError:Tab和空格混用 SystemError:一般的解释器系统异常 TypeError:不同类型间的无效操作 ValueError:...Python标准警告总结 Warning:警告的基类 DeprecationWarning:关于被弃用的特征的警告 FutureWarning:关于构造将来语义会有改变的警告 UserWarning:用户代码生成的警告...print('打开文件出错') else: print('没有错误很棒棒') # 如果使用else和finally,else要在finally之前,否则语法错误 try: f = open...') finally: print('我是必须执行的') 5. raise语句 概念 Python 使用raise语句抛出一个指定的异常。...(尝试使用try catch异常处理结构对输入情况进行处理) 获取随机数采用random模块。

85140

【Python3之异常处理】 转

SystemError 一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误...转换时错误 Warning 警告的基类 DeprecationWarning 关于被弃用的特征的警告 FutureWarning 关于构造将来语义会有改变的警告 OverflowWarning...,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性 3.如何进行异常处理 使用if判断式 ?...,都是ValueError,相同的错误按理说只处理一次就可以了,而用if,由于这二者if的条件不同,这只能逼着你重新写一个新的if来处理第二段代码的异常 第三段也一样 try...except 语法...最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

1.2K20
领券