除了不在我的python 3.6程序中工作。为什么?

时间:2018-02-06 00:27:49

标签: python exception-handling python-3.6

所以,我有一个带有类和记录器的python程序。这是代码:

import logging

path2log = "logs/1.pylog"

LOG_FORMAT = "%(levelname)s - %(name)s (%(asctime)s) : %(message)s"

#existing log levels are:
#Debug
#Info
#Warning
#Error
#Critical

logging.basicConfig(filename = path2log,
                    level = logging.DEBUG,
                    format = LOG_FORMAT)
logger = logging.getLogger("1.py.logger 'CONSOLE'")

class Emperor():

    try:
        def __init__(self, name, famname, level):

            try:
                self.name = name
                self.famname = famname
                self.level = level

                try:
                    logger.info("Emperor created with name:")
                    logger.info(self.name)
                    logger.info("family name:")
                    logger.info(self.famname)
                    logger.info("and level:")
                    logger.info(self.level)
                except TypeError:
                    logger.error("Missing perameter creating object in emperor class")
            except TypeError:
                logger.error("Missing perameter creating object in emperor class.")

    except TypeError:
        logger.error("Missing perameter creating object in emperor class.")

但是def init 区域中的所有例外都没有做任何事情。运行程序时我仍然收到错误。我该如何解决?

修改:Here is the error:

1 个答案:

答案 0 :(得分:0)

您尝试捕获异常的问题与误解生成异常的位置有关。当您使用错误的参数调用函数时,您会从调用中收到错误,而不是来自函数内部。

函数定义中或周围的try / except代码无法捕获该异常,因为函数的代码无法开始运行(和定义之前发生了没有错误,因此try语句周围的except / def无法提供帮助。如果呼叫本身失败,只有呼叫周围的代码可以做某事。