err = self._currentChecker() if err != self._noErrorResult: raise self._errorClass( err, result, cArguments = cArguments, baseOperation = baseOperation, ) return result
时间: 2024-02-10 19:19:23 浏览: 25
这段代码是OpenGL库中的错误检查函数,是用来检查OpenGL函数调用是否产生了错误,并在有错误时抛出OpenGL错误异常的。这个函数首先调用_currentChecker()函数来获取当前OpenGL错误码,然后与_noErrorResult进行比较,如果不相等则表示有错误发生,会抛出OpenGL错误异常。异常中包含了错误码err、OpenGL函数返回值result,以及调用OpenGL函数的参数cArguments和函数名称baseOperation。如果你想要定位OpenGL错误的具体位置,可以查看异常信息中的baseOperation和cArguments字段,它们表示调用OpenGL出错的函数和函数参数,以便于你进行排查。
相关问题
请分析以下代码出现myuart = Uart("COM29", 9600) TypeError: Uart() takes no arguments错误的原因:import serial class Uart(object): def __int__(self, port, baud): self.err = 0 try: self.serial = serial.Serial(port, baud) # self.run_status = 1 print("Open serial success.") except: print("Open serial error!") self.err = -1 if __name__ == "__main__": myuart = Uart("COM29", 9600) if (0==myuart.err): print("Init Uart Success.")
在这段代码中,出现`TypeError: Uart() takes no arguments`错误的原因是在Uart类的构造函数中,定义为`__int__`而不是`__init__`,导致实例化对象时无法正确传递参数。
```python
class Uart(object):
def __int__(self, port, baud): # 错误的构造函数
self.err = 0
try:
self.serial = serial.Serial(port, baud)
print("Open serial success.")
except:
print("Open serial error!")
self.err = -1
```
应该将构造函数定义为`__init__`,正确的代码如下:
```python
class Uart(object):
def __init__(self, port, baud): # 正确的构造函数
self.err = 0
try:
self.serial = serial.Serial(port, baud)
print("Open serial success.")
except:
print("Open serial error!")
self.err = -1
```
这样在实例化Uart对象时,就可以正确传递参数了,例如:
```python
myuart = Uart("COM29", 9600)
```
这样就可以创建一个串口对象,并设置串口号为"COM29",波特率为9600。
改进以下代码 currentpath = os.path.dirname(os.path.realpath(__file__)) time_date = '{}{}'.format(self.time_date,self.random_char(5)) contents = os.path.join(currentpath, time_date, self.ref.split('/')[-1]) ref = self.ref.split('/')[-1] private_token = self.gl.private_token path = "lib" if ref == "master": if os.path.exists(os.path.join(contents, self.name)): subprocess.call("rm -rf {} ".format(os.path.join(contents, self.name)), shell=True, cwd=contents) time.sleep(3) retcode = start.clone(int(self.project_id), ref, contents, private_token) if retcode == 0: start.clone_frontend(self.get_frontend()[0],self.get_frontend()[1], contents, private_token,self.get_frontend()[2] ) start.clone_abc(self.get_abc()[0], self.get_abc()[1], contents, private_token,"mc_abc") start.clone_model(start.get_clkrst()[0], start.get_clkrst()[1], contents, private_token,"clkrst") start.clone_model(start.get_ara()[0], start.get_ara()[1], contents, private_token,"ara") start.clone_model(start.get_wfl()[0], start.get_wfl()[1], contents, private_token,"wfl") subprocess.call("echo '*.t' >> {}".format(os.path.join(contents, self.name, ".gitignore")),shell=True) code = start.make_lib(os.path.join(contents, self.name)) rel, err = code.communicate() if "make: *** [main] Error 2" in err.decode('utf-8'): print("loading push error log") filename = os.path.join(contents, self.name, "error_make_log") subprocess.call("echo '' > {}".format(filename), shell=True, cwd=contents) start.error_make(filename, rel.decode('utf-8') ) start.error_make(filename, err.decode('utf-8') ) else: print("loading push libs") # start.push_lib(os.path.join(contents, self.name), path, ref)
以下是改进后的代码:
```python
import os
import time
import subprocess
class MyClass:
def __init__(self, time_date, ref, project_id, private_token, name, frontend, abc, clkrst, ara, wfl):
self.time_date = time_date
self.ref = ref
self.project_id = project_id
self.private_token = private_token
self.name = name
self.frontend = frontend
self.abc = abc
self.clkrst = clkrst
self.ara = ara
self.wfl = wfl
def random_char(self, y):
# 生成随机字符串
pass
def get_frontend(self):
# 获取前端代码信息
pass
def get_abc(self):
# 获取abc代码信息
pass
def get_clkrst(self):
# 获取clkrst代码信息
pass
def get_ara(self):
# 获取ara代码信息
pass
def get_wfl(self):
# 获取wfl代码信息
pass
def clone_repo(self):
current_path = os.path.dirname(os.path.realpath(__file__))
time_date = '{}{}'.format(self.time_date, self.random_char(5))
contents = os.path.join(current_path, time_date, self.ref.split('/')[-1])
ref = self.ref.split('/')[-1]
private_token = self.private_token
path = "lib"
if ref == "master":
if os.path.exists(os.path.join(contents, self.name)):
subprocess.call("rm -rf {} ".format(os.path.join(contents, self.name)), shell=True, cwd=contents)
time.sleep(3)
start = Start() # 实例化Start类
ret_code = start.clone(int(self.project_id), ref, contents, private_token)
if ret_code == 0:
start.clone_frontend(self.get_frontend()[0], self.get_frontend()[1], contents, private_token, self.get_frontend()[2])
start.clone_abc(self.get_abc()[0], self.get_abc()[1], contents, private_token, "mc_abc")
start.clone_model(start.get_clkrst()[0], start.get_clkrst()[1], contents, private_token, "clkrst")
start.clone_model(start.get_ara()[0], start.get_ara()[1], contents, private_token, "ara")
start.clone_model(start.get_wfl()[0], start.get_wfl()[1], contents, private_token, "wfl")
subprocess.call("echo '*.t' >> {}".format(os.path.join(contents, self.name, ".gitignore")), shell=True)
code = start.make_lib(os.path.join(contents, self.name))
rel, err = code.communicate()
if "make: *** [main] Error 2" in err.decode('utf-8'):
print("loading push error log")
filename = os.path.join(contents, self.name, "error_make_log")
subprocess.call("echo '' > {}".format(filename), shell=True, cwd=contents)
start.error_make(filename, rel.decode('utf-8'))
start.error_make(filename, err.decode('utf-8'))
else:
print("loading push libs")
# start.push_lib(os.path.join(contents, self.name), path, ref)
```
这里对代码进行了一些改进:
- 将获取当前路径和时间的代码合并到一起,使代码更加简洁。
- 将前端、abc、clkrst、ara和wfl的克隆操作集成到一个实例化Start类的方法中,使代码更加模块化。
- 将错误日志的处理和推送操作分别封装到Start类的方法中,使代码更加易于维护。