首页/文章/ 详情

ANSA二次开发_Python基础-异常处理结构

3月前浏览976
在Python中,try是Python中的一个关键字,用于异常处理。类似于tcl语言的catch函数。
通过使用try语句块,可以捕获程序执行中可能发生的错误,并根据不同的错误类型对这些异常进行处理,而不让程序直接崩溃,这对于提高程序的健壮性和用户体验非常重要。
当然tcl语言也是同样可以实现,通过捕获catch函数输出,再配合逻辑判断,也能达到同样的效果
1、基本格式
try语句块通常与except语句块一起使用,以下案例为导入第三方模块的判断。







try:    import xlrdsexcept  ModuleNotFoundError:  print (str("The current environment does not have the xlrd module"))else:  print (str("Import successfully"))


2、完整的异常处理结构

一个完整的异常处理结构可能包括try, except, else, 和 finally:

  • try: 这个块中的代码是需要尝试执行的,可能会引发异常。

  • except: 如果在try块中发生异常,则执行这个块中的代码。

  • else: 如果try块中没有异常发生,则执行这个块中的代码。

  • finally: 无论是否发生异常,这个块中的代码都会被执行。


3、完整演示案例













try:    # 尝试除以零操作,这将引发一个ZeroDivisionError异常    result = 10 / 0except ZeroDivisionError:    # 捕获到除以零的异常后,执行这里的代码    print("Caught an error: Cannot divide by zero.")else:    # 如果没有异常发生,执行这里的代码    print("Division successful.")finally:    # 无论是否发生异常,都执行这里的代码    print("This is executed no matter what.")


输出将会是:


Caught an error: Cannot divide by zero.This is executed no matter what.

try语句块可以搭配多个except子句来捕获不同类型的异常,并根据异常类型执行不同的处理逻辑。您还可以使用一个except子句捕获多个异常类型,使用try和except可以帮助构建更加健壮、容错性更高的程序。


这是通过try检查用户输出字符类型是否正确。














def _isfloat(num):  try:    float(num)    return True  except (ValueError, OverflowError, RuntimeError, TypeError):    return False
def _isint(num):  try:    int(num)    return True  except (ValueError, OverflowError, RuntimeError, TypeError):    return False

以判断单元类型为例,当然实际开发中我们可以通过type直接获取单元类型,这里只是举例说明,通过判断是否存在G4来判断单元类型:

















from ansa import basefrom ansa import constants
elem = base.CollectEntities(constants.NASTRAN, None, "__ELEMENTS__", filter_visible=True)[0]elemV = base.GetEntityCardValues(constants.NASTRAN, elem, ['G4','typ'])#print (elemV)
try:  elemV['G4']except KeyError:  type="CTRIA3"else:  type="CQUAD4"  
print (type)


来源:TodayCAEer
Nastran二次开发ANSAUGpythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:3月前
TodayCAEer
本科 签名征集中
获赞 18粉丝 28文章 243课程 0
点赞
收藏
作者推荐

ANSA二次开发:解决ANSA延伸功能的不完善

大家可能都有过这样的经历,在从使用HyperMesh以及ANSA的过程中,会发现一些常用的功能在ANSA中得到了不同的实现。其中,一个就是延伸网格操作,它在HyperMesh中命令是"drag",允许用户选择节点并指定延伸方向和距离,从而快速创建新的网格。在ANSA中,延伸功能也有对应的操作,名为"Extrude",但从我个人使用情况来看,似乎不太符合我的期望。在ANSA中的延伸功能存在一个限制:用户必须选择的延伸方向的,是基于边(edge)或曲线(curve),并且所选择的路径还得在选择延伸边界的前方。这种约束就使用户操作起来相对繁琐,并且限制了延伸的灵活性。例如不能通过三点法向,两点矢量,正交矢量延伸,为了解决这个问题,我编写了一个二次开发程序。通过选择edge并指定通过一点,两点,三点的方式指定延伸方向和距离,就成功实现了类似于HyperMesh中"drag"功能的延伸操作。当然,我要强调的是,这个程序仅代表我个人对于ANSA软件的理解,并不意味着ANSA本身的不足。如果你对这个程序感兴趣,只需回复关键字"ANSA_extend",自动回复文件链接。###########################此外,当ANSA系列完结后,后台有不少的小伙伴在咨询ANSA二次开发相关的问题,那么就创建一个交流群吧。欢迎对ANSA感兴趣的小伙伴。与我们一起探讨技术难题,期待与你们的交流,共同进步。此外希望您对ANSA具有一定的开发能力或使用经验。以下问题任选四个,以尽量简短的话,后台回复您的思路即可。或其他能代表ANSA开发能力、ANSA使用能力的说明。ANSA交流群二次开发基础问题:1、如何通过一个单元获取单元所在面的单元对象。2、如何通过一个点抓取指定圆球半径内的节点对象。3、如何通过一个点与矢量,直径,抓取圆柱范围内的节点对象4、如何获取距离最近坐标点的节点对象。5、如何自动修复模型check>Mesh>crake错误。6、如何创建rbe2单元,并且主点在质心,而不是中心。7、如何对一组相连但无序的节点按照拓扑关系进行排序。8、当一个PART存在多个零件,如何按照PIDRigion的拓扑关系进行分组。来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈