Text File
systemerror.txt

System Errors

System Errors are errors representing a system failure. At the application level, they are errors that are uncaught by the application and that a developer hasn't provided a custom error view for.

Zope provides a default system error view that prints an obnoxius terse message and that sets the response status.

To see an example of this, we'll create a ZPT page with an intentional error:

>>> print http(r"""
... POST /+/zope.app.zptpage.ZPTPage%3D HTTP/1.1
... Authorization: Basic mgr:mgrpw
... Content-Length: 739
... Content-Type: multipart/form-data; boundary=---------------------------125598457818223697821067764270
... Referer: http://localhost:8081/+/zope.app.zptpage.ZPTPage=
...
... -----------------------------125598457818223697821067764270
... Content-Disposition: form-data; name="field.source"
...
... <html><body tal:content="container/eek" /></html>
... -----------------------------125598457818223697821067764270
... Content-Disposition: form-data; name="field.expand.used"
...
...
... -----------------------------125598457818223697821067764270
... Content-Disposition: form-data; name="field.evaluateInlineCode.used"
...
...
... -----------------------------125598457818223697821067764270
... Content-Disposition: form-data; name="UPDATE_SUBMIT"
...
... Add
... -----------------------------125598457818223697821067764270
... Content-Disposition: form-data; name="add_input_name"
...
... test.html
... -----------------------------125598457818223697821067764270--
... """)
HTTP/1.1 303 See Other
...
Location: http://localhost/@@contents.html
...

When we visit it, we get a terse error and a 500 status:

We get a system error, because the problem is in the template, not in the URL:

>>> print http(r"""
... GET /test.html HTTP/1.1
... """)
HTTP/1.1 500 Internal Server Error
...
  A system error occurred.
...

Another way of getting a system error is the occurrence of a system error, such as ComponentLookupError. I have registered a simple view in exception-ftesting.zcml that will raise a component lookup error. So if we call componentlookuperror.html, we should get the error message:

>>> print http(r"""
... GET /componentlookuperror.html HTTP/1.1
... """)
HTTP/1.1 500 Internal Server Error
...
  A system error occurred.
...