提问者:小点点

Python:3函数内部的错误处理


我创建了一个类和函数。 该函数正在创建一个新对象并执行其他操作,并返回该对象。

class DoublyLinkedList:
    def __init__(self, element):
        
        self.item = element
        self.before = None
        self.after = None
        
    def __str__(self):

        
        if self.before is None:
            return f'Previous node : {None}, item : {self.item}, Next node : {self.after.item};' 
        
        elif self.after is None:
            return f'Previous node : {self.before.item}, item : {self.item}, Next node : {None};'
        
        else:
            return f'Previous node : {self.before.item}, item : {self.item}, Next node : {self.after.item};'

def addToHeadDLL(element, head):

    try:
        name = DoublyLinkedList(element)

    except NameError:
        print('Please enter correct parameters')

    else:
        head.before = name
        name.after = head
        print('List added to Head')
        return name

a = DoublyLinkedList(1)
b = DoublyLinkedList(2)

a.after = b
b.before = a

c = addToHeadDLL(3, a) #Works

d = addToHeadDLL(4, e) #Produces NameError

当NameError发生时,它必须打印“请输入正确的参数”。 但是输出是这样的,

List added to Head
Traceback (most recent call last):
  File "c:/Users/JBallipalli/Desktop/Codes/dll.py", line 43, in <module>
    d = addToHeadDLL(4, e)
NameError: name 'e' is not defined

请帮我解决这个。。。


共3个答案

匿名用户

当您调用函数时,会返回NameError,因为python不知道要将什么作为E传递。
它永远不会到达AddToHeaddLL中的异常处理部分。

匿名用户

不要在函数中使用tryexcept

如果您想要NameError,那么调用try块中的函数AddToHeaddLL

像那样

try:
    d = addToHeadDLL(4, e) #Produces NameError
except:
    print("Name error")

匿名用户

d = addToHeadDLL(4, e) #Produces NameError

你在哪里定义变量e的值?