summaryrefslogtreecommitdiff
path: root/docs/html/_sources/dev_guide/errorHandling.rst.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html/_sources/dev_guide/errorHandling.rst.txt')
-rw-r--r--docs/html/_sources/dev_guide/errorHandling.rst.txt329
1 files changed, 329 insertions, 0 deletions
diff --git a/docs/html/_sources/dev_guide/errorHandling.rst.txt b/docs/html/_sources/dev_guide/errorHandling.rst.txt
new file mode 100644
index 0000000..e97d1fb
--- /dev/null
+++ b/docs/html/_sources/dev_guide/errorHandling.rst.txt
@@ -0,0 +1,329 @@
+Directives: Error Handling
+==========================
+
+(errorHandling)
+
+#try and #raise
+---------------
+
+(errorHandling.try)
+
+The template:
+
+::
+
+ #import traceback
+ #try
+ #raise RuntimeError
+ #except RuntimeError
+ A runtime error occurred.
+ #end try
+
+ #try
+ #raise RuntimeError("Hahaha!")
+ #except RuntimeError
+ #echo $sys.exc_info()[1]
+ #end try
+
+ #try
+ #echo 1/0
+ #except ZeroDivisionError
+ You can't divide by zero, idiot!
+ #end try
+
+The output:
+
+::
+
+ A runtime error occurred.
+
+ Hahaha!
+
+ You can't divide by zero, idiot!
+
+The generated code:
+
+::
+
+ try:
+ raise RuntimeError
+ except RuntimeError:
+ write('A runtime error occurred.\n')
+ write('\n')
+ try:
+ raise RuntimeError("Hahaha!")
+ except RuntimeError:
+ write(filter(VFN(sys,"exc_info",0)()[1]))
+ write('\n')
+ write('\n')
+ try:
+ write(filter(1/0))
+ write('\n')
+ except ZeroDivisionError:
+ write("You can't divide by zero, idiot!\n")
+
+{#finally} works just like in Python.
+
+#assert
+-------
+
+(errorHandling.assert)
+
+The template:
+
+::
+
+ #assert False, "You lose, buster!"
+
+The output:
+
+::
+
+ Traceback (most recent call last):
+ File "x.py", line 117, in ?
+ x().runAsMainProgram()
+ File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/
+ Template.py", line 331, in runAsMainProgram
+ CmdLineIface(templateObj=self).run()
+ File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/
+ TemplateCmdLineIface.py", line 59, in run
+ print self._template
+ File "x.py", line 91, in respond
+ assert False, "You lose, buster!"
+ AssertionError: You lose, buster!
+
+The generated code:
+
+::
+
+ assert False, "You lose, buster!"
+
+#errorCatcher
+-------------
+
+(errorHandling.errorCatcher)
+
+No error catcher
+~~~~~~~~~~~~~~~~
+
+(errorHandling.errorCatcher.no)
+
+The template:
+
+::
+
+ $noValue
+
+The output:
+
+::
+
+ Traceback (most recent call last):
+ File "x.py", line 118, in ?
+ x().runAsMainProgram()
+ File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/
+ Template.py", line 331, in runAsMainProgram
+ CmdLineIface(templateObj=self).run()
+ File "/local/opt/Python/lib/python2.2/site-packages/Webware/Cheetah/
+ TemplateCmdLineIface.py", line 59, in run
+ print self._template
+ File "x.py", line 91, in respond
+ write(filter(VFS(SL,"noValue",1))) # generated from '$noValue' at line
+ 1, col 1.
+ NameMapper.NotFound: noValue
+
+The generated code:
+
+::
+
+ write(filter(VFS(SL,"noValue",1))) # generated from '$noValue' at line 1,
+ # col 1.
+ write('\n')
+
+Echo and BigEcho
+~~~~~~~~~~~~~~~~
+
+(errorHandling.errorCatcher.echo)
+
+The template:
+
+::
+
+ #errorCatcher Echo
+ $noValue
+ #errorCatcher BigEcho
+ $noValue
+
+The output:
+
+::
+
+ $noValue
+ ===============<$noValue could not be found>===============
+
+The generated code:
+
+::
+
+ if "Echo" in self._errorCatchers:
+ self._errorCatcher = self._errorCatchers["Echo"]
+ else:
+ self._errorCatcher = self._errorCatchers["Echo"] = ErrorCatchers.Echo(self)
+ write(filter(self.__errorCatcher1(localsDict=locals())))
+ # generated from '$noValue' at line 2, col 1.
+ write('\n')
+ if "BigEcho" in self._errorCatchers:
+ self._errorCatcher = self._errorCatchers["BigEcho"]
+ else:
+ self._errorCatcher = self._errorCatchers["BigEcho"] = \
+ ErrorCatchers.BigEcho(self)
+ write(filter(self.__errorCatcher1(localsDict=locals())))
+ # generated from '$noValue' at line 4, col 1.
+ write('\n')
+
+ListErrors
+~~~~~~~~~~
+
+(errorHandling.errorCatcher.listErrors)
+
+The template:
+
+::
+
+ #import pprint
+ #errorCatcher ListErrors
+ $noValue
+ $anotherMissingValue.really
+ $pprint.pformat($errorCatcher.listErrors)
+ ## This is really self.errorCatcher().listErrors()
+
+The output:
+
+::
+
+ $noValue
+ $anotherMissingValue.really
+ [{'code': 'VFS(SL,"noValue",1)',
+ 'exc_val': <NameMapper.NotFound instance at 0x8170ecc>,
+ 'lineCol': (3, 1),
+ 'rawCode': '$noValue',
+ 'time': 'Wed May 15 00:38:23 2002'},
+ {'code': 'VFS(SL,"anotherMissingValue.really",1)',
+ 'exc_val': <NameMapper.NotFound instance at 0x816d0fc>,
+ 'lineCol': (4, 1),
+ 'rawCode': '$anotherMissingValue.really',
+ 'time': 'Wed May 15 00:38:23 2002'}]
+
+The generated import:
+
+::
+
+ import pprint
+
+Then in the generated class, we have our familiar {.respond} method
+and several new methods:
+
+::
+
+ def __errorCatcher1(self, localsDict={}):
+ """
+ Generated from $noValue at line, col (3, 1).
+ """
+
+ try:
+ return eval('''VFS(SL,"noValue",1)''', globals(), localsDict)
+ except self._errorCatcher.exceptions(), e:
+ return self._errorCatcher.warn(exc_val=e, code= 'VFS(SL,"noValue",1)' ,
+ rawCode= '$noValue' , lineCol=(3, 1))
+
+ def __errorCatcher2(self, localsDict={}):
+ """
+ Generated from $anotherMissingValue.really at line, col (4, 1).
+ """
+
+ try:
+ return eval('''VFS(SL,"anotherMissingValue.really",1)''', globals(),
+ localsDict)
+ except self._errorCatcher.exceptions(), e:
+ return self._errorCatcher.warn(exc_val=e,
+ code= 'VFS(SL,"anotherMissingValue.really",1)' ,
+ rawCode= '$anotherMissingValue.really' , lineCol=(4, 1))
+
+ def __errorCatcher3(self, localsDict={}):
+ """
+ Generated from $pprint.pformat($errorCatcher.listErrors) at line, col
+ (5, 1).
+ """
+
+ try:
+ return eval('''VFN(pprint,"pformat",0)(VFS(SL,
+ "errorCatcher.listErrors",1))''', globals(), localsDict)
+ except self._errorCatcher.exceptions(), e:
+ return self._errorCatcher.warn(exc_val=e, code=
+ 'VFN(pprint,"pformat",0)(VFS(SL,"errorCatcher.listErrors",1))' ,
+ rawCode= '$pprint.pformat($errorCatcher.listErrors)' ,
+ lineCol=(5, 1))
+
+::
+
+ def respond(self,
+ trans=None,
+ dummyTrans=False,
+ VFS=valueFromSearchList,
+ VFN=valueForName,
+ getmtime=getmtime,
+ currentTime=time.time):
+
+
+ """
+ This is the main method generated by Cheetah
+ """
+
+ if not trans:
+ trans = DummyTransaction()
+ dummyTrans = True
+ write = trans.response().write
+ SL = self._searchList
+ filter = self._currentFilter
+ globalSetVars = self._globalSetVars
+
+ ########################################
+ ## START - generated method body
+
+ if exists(self._filePath) and getmtime(self._filePath) > self._fileMtime:
+ self.compile(file=self._filePath)
+ write(getattr(self, self._mainCheetahMethod_for_x)(trans=trans))
+ if dummyTrans:
+ return trans.response().getvalue()
+ else:
+ return ""
+ if "ListErrors" in self._errorCatchers:
+ self._errorCatcher = self._errorCatchers["ListErrors"]
+ else:
+ self._errorCatcher = self._errorCatchers["ListErrors"] = \
+ ErrorCatchers.ListErrors(self)
+ write(filter(self.__errorCatcher1(localsDict=locals())))
+ # generated from '$noValue' at line 3, col 1.
+ write('\n')
+ write(filter(self.__errorCatcher2(localsDict=locals())))
+ # generated from '$anotherMissingValue.really' at line 4, col 1.
+ write('\n')
+ write(filter(self.__errorCatcher3(localsDict=locals())))
+ # generated from '$pprint.pformat($errorCatcher.listErrors)' at line
+ # 5, col 1.
+ write('\n')
+ # This is really self.errorCatcher().listErrors()
+
+ ########################################
+ ## END - generated method body
+
+ if dummyTrans:
+ return trans.response().getvalue()
+ else:
+ return ""
+
+So whenever an error catcher is active, each placeholder gets
+wrapped in its own method. No wonder error catchers slow down the
+system!
+
+