- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
以下内容来自django源码(Django-1.41/django/utils/encoding.py
);
try:
s = unicode(str(s), encoding, errors)
except UnicodeEncodeError:
if not isinstance(s, Exception):
raise
# If we get to here, the caller has passed in an Exception
# subclass populated with non-ASCII data without special
# handling to display as a string. We need to handle this
# without raising a further exception. We do an
# approximation to what the Exception's standard str()
# output should be.
s = u' '.join([force_unicode(arg, encoding, strings_only,
errors) for arg in s])
我的问题是:在什么情况下 s
会是 Exception 的一个实例?
当 s 是 Exception 的一个实例,并且 s 既没有 str 也没有 repr 属性时。比这种情况发生。这样对吗?
最佳答案
如果有人调用 force_unicode,
s
将是一个异常(exception)带有 Exception 子类的函数,消息包含 unicode 字符。
s = Exception("\xd0\x91".decode("utf-8"))
# this will now throw a UnicodeEncodeError
unicode(str(s), 'utf-8', 'strict')
如果 try
block 中的代码失败,则不会向 s
分配任何内容,因此 s 将保留最初调用函数时使用的内容。
由于 Exception
继承自 object
,而 object
从 Python 2.5 开始就有了 __unicode__
方法,它可能可能是此代码存在于 Python 2.4,现在已过时。
更新:打开拉取请求后,此代码现已从 Django 源中删除:https://github.com/django/django/commit/ce1eb320e59b577a600eb84d7f423a1897be3576
关于python - 我对这段代码感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898212/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!