- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在引发异常后,我试图覆盖 Python 中 Exception 子类的打印输出,但我没有运气让我的覆盖实际被调用。
def str_override(self):
"""
Override the output with a fixed string
"""
return "Override!"
def reraise(exception):
"""
Re-raise an exception and override its output
"""
exception.__str__ = types.MethodType(str_override, exception, type(exception))
# Re-raise and remove ourselves from the stack trace.
raise exception, None, sys.exc_info()[-1]
def test():
"""
Should output "Override!" Actually outputs "Bah Humbug"
"""
thử:
thử:
raise Exception("Bah Humbug")
except Exception, e:
reraise(e, "Said Scrooge")
except Exception, e:
print e
知道为什么这实际上没有覆盖 đường 方法吗?反省实例变量表明该方法实际上已被该方法覆盖,但它就像 Python 只是拒绝通过打印调用它。
我在这里错过了什么?
câu trả lời hay nhất
问题不是 __str__()
没有被覆盖(就像你已经说过的那样),而是 str(e)
(通过打印无形地调用)不总是等同于e.__str__()
。更具体地说,如果我做对了,str()
(以及其他特殊方法,例如 repr()
)将不会查找 đường 在实例字典中 - 它只会在类字典中查找它。至少所谓的新型类(Python 3.x IIRC 中仅有的类)就是这种情况。您可以在这里阅读更多相关信息:
http://mail.python.org/pipermail/python-bugs-list/2005-December/031438.html
如果您想更改重新引发的异常的异常错误消息,您可以改为执行以下操作:
def reraise(exception):
"""
Re-raise an exception and override its output
"""
exType = type(exception)
newExType = type(exType.__name__ + "_Override", (exType,), { '__str__': str_override})
exception.__class__ = newExType
# Re-raise and remove ourselves from the stack trace.
raise exception, None, sys.exc_info()[-1]
这将使用 đường 覆盖动态派生一个新的异常类,并将异常更改为该类的实例。现在您的代码应该可以工作了。
关于Python:在异常实例中重写 __str__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918003/
我习惯于使用 Apache 服务器,所以当启用 mod_rewrite 时,我可以创建一个 htaccess 文件并使用 URL 重写。 这是我的 htaccess 文件: RewriteEngine
我正在尝试编写一个 mixin 来修改输出的父选择器。这个想法是,在调用 mixin 的情况下,父选择器需要对其进行字符串替换。我有大部分工作,但我不知道如何吞下 & . .test { @inc
我有一个本地目录(上传)和一个 S3 桶设置。 当用户上传图片时,文件存储在本地目录:/uploads/member_id/image_name30 分钟后,系统将文件上传到 S3 使用相同的路径:s
我正在尝试使用以下内容重写代理页面的正文链接: sub_filter http://proxied.page.come http://local.page.com; sub_filte
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 1年前关闭。 Improve this questi
我尝试在我的 JSF 应用程序中使用“重写”(http://ocpsoft.org/rewrite/)。 一切都很好,我已经创建了规则: .addRule(Join.path("/profile/{p
我可以在 AEM 中大致看到两种 URL 重写方法: /etc/map/http(s)下的Sling映射(sling:Mapping) 使用链接重写器/TransformerFactory 重写 UR
我有一个 onclick 函数,我想将 anchor 添加到 href 值。我不想更改 URL,因为我需要该网站仍然可以为没有 javascript 的人/出于 SEO 目的而运行。所以这是我尝试使用
Tôi phải hiển thị loại tiền và giá trong UILabel. Trong một nhãn nhưng sử dụng các cỡ chữ khác nhau. Bây giờ nó trông như thế này: ...Tôi đã làm điều này bằng cách ghi đè drawTextInRect: như thế này: - (void)drawTextIn
Tôi đang cố gắng chuyển hướng bằng cách sử dụng: RewriteRule ^reviews/area/Santa-Barbara%2F$"/reviews/area/santa-barbara" [R=301,NC
Tôi đang sử dụng FOSUserBundle và tôi muốn ghi đè Bộ điều khiển registerAction của anh ấy. Tôi đã đọc tài liệu liên quan đến ghi đè Bộ điều khiển FOSUserBundle nhưng nó không hoạt động.
Tôi đang cố gắng viết lại URL để hoạt động trên trang web của mình. Đây là nội dung .htaccess của tôi: RewriteEngine On RewriteRule ^blog/?$ index.php?page=blog
Ok điều này làm tôi phát điên... Tôi đang cố gắng viết lại url của mình như thế này: Bây giờ: http://www.somedomain.com/Somepage.aspx http://www.somedomain.co
Các phương thức cuối cùng không thể bị ghi đè trong các lớp con. Nhưng với sự kỳ diệu của Scala, điều đó dường như có thể thực hiện được. Hãy xem xét ví dụ sau: trait Test { Final def doIt(s: String): String = s
Tôi có một truy vấn tương tự như sau: Select ser.key From dbo.Enrlmt ser Where ser.wd >= @FromDate AND ser.wd ser.wd
Tôi mới làm quen với nginx và chỉ đang cố gắng làm điều gì đó mà tôi nghĩ là đơn giản. Nếu tôi làm như vậy: - Curl http://localhost:8008/12345678 Tôi muốn trang index.html được trả về. Nhưng tôi phải
Một trong những khách hàng của chúng tôi đã tạo mã QR có khoảng trắng trong url. Làm cách nào để viết chuyển hướng nginx xử lý việc này? Một vài lần thử sử dụng những thứ như "%20" trong chuỗi dường như khiến nginx bị lỗi hoặc lừa đảo
Tôi đang cố gắng ghi đè phương thứcappendChild để tôi có thể kiểm soát các phần tử được tạo động và sửa đổi chúng nếu cần trước khi chèn vào trang. Tôi đã thử mã mẫu này chỉ để xem liệu nó có thể thực hiện được không: var f = Element.prot
Tôi hiện đang sử dụng chức năng sau để xác định xem có nên ẩn danh sách thả xuống khi người dùng nhấp vào đâu đó (trong phản ứng) hay không. Mọi thứ đều hoạt động tốt nhưng khi tôi nhấp vào phần thân thì nó sẽ ghi lại như sau. Tôi đã thử viết lại nó nhiều lần nhưng tôi không thể tìm ra giải pháp cho vấn đề này. Chưa bắt được
Tôi đang phát triển ứng dụng Khởi động/Tích hợp mùa xuân. Tôi sử dụng nhiều tài liệu application.yml (src/main/resources/application.yml) để thiết lập
Tôi là một lập trình viên xuất sắc, rất giỏi!