gpt4 book ai didi

异常中的 Python 字符串转换为元组

转载 作者:行者123 更新时间:2023-11-28 22:35:49 24 4
gpt4 key购买 nike

Python 2.7.10 似乎在抛出异常时将我的字符串转换为元组。这是我的例子:

class MyError(RuntimeError):
def __init__(self, arg):
self.args = arg

def raiseMyError():
errorCode = 29
errorText = 'Port not ready yet'
exitCodeMessage = 'ERROR {0}: {1}'.format(errorCode, errorText)
# print exitCodeMessage --> print out here and it's a string
raise MyError(str(exitCodeMessage))

try:
raiseMyError()

except MyError as e:
print e.args

我创建了一个包含错误代码和描述的字符串,并使用它来构建一个专门构建的异常类。当我在创建异常之前打印出 exitCodeMessage 变量时,我得到了我期望的结果:

ERROR 29: Port not ready yet

但是,来自异常处理程序内部的跟踪为我提供了以下信息:

('E', 'R', 'R', 'O', 'R', ' ', '2', '9', ':', ' ', 'P', 'o', 'r', 't', ' ', 'n', 'o', 't',
' ', 'r', 'e', 'a', 'd', 'y', ' ', 'y', 'e', 't')

谁能告诉我这是怎么回事,我能做些什么?

最佳答案

这是因为 args 是在 BaseException 类中定义的属性。

查看exceptions.py:70:

args = property(lambda self: tuple())

试试这个:

class MyError(RuntimeError):
def __init__(self, errorString):
self._errorString = errorString

def raiseMyError():
errorCode = 29
errorText = 'Port not ready yet'
exitCodeMessage = 'ERROR %s: %s' % (errorCode, errorText)
# print exitCodeMessage --> print out here and it's a string
raise MyError(exitCodeMessage)

try:
raiseMyError()

except MyError as e:
print e._errorString
print e.args

输出:

ERROR 29: Port not ready yet
()

关于异常中的 Python 字符串转换为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com