python - 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
请帮我解决这个问题...
编辑: 不是 try-except- else 不在函数中运行。检查以下代码。它确实运行。
import os
def openfolder(dir):
"""Opens folder in file explorer
Args:
dir (str): path of the folder
"""
os.startfile(dir)
def access(dir):
"""Checking access to the given directory
Args:
dir (str): directory path
Returns:
bool, list: status, list of files & folders in the directory path
"""
try:
filesList = os.listdir(dir)
except PermissionError:
print(f'No permission to access {os.path.basename(dir)}')
print(f'Please delete the file in {os.path.basename(dir)} manually')
folder = input('Do you wanna open folder in file explorer? type y/n : ')
if folder[0].lower() == 'y':
openfolder(dir)
return False, None
else:
return True, filesList
path = r'C:\Users\JBallipalli\Recent' # raises PermissionError
permission, files = access(path)
并检查输出:
No permission to access Recent
Please delete the file in Recent manually
Do you wanna open folder in file explorer? type y/n :
这两个函数之间的唯一区别是上面的(DoublyLinkedList)代码调用函数内部的类,而其他的则没有。我想知道为什么它的行为是这样的?
我的 Python 版本:3.7.6
解决方案
NameError
调用函数时返回,因为 python 不知道传递什么作为e
.
它永远不会到达addToHeadDLL
.
推荐阅读
- c# - 大文件夹修改目录安全需要很长时间
- php - Fantasy Premier League API PHP cURL
- timeout - Hazelcast OperationTimeoutException 远程执行
- java - 如何使用 Maven 创建具有依赖项的不可执行 JAR?
- spreadsheet - 如何将 SpreadsheetDocument 放置在 1C:Enterprise 平台中的数据处理器表单上?
- azure - Microsoft Graph 访问令牌包含错误的联系人 API 权限
- cmake - 如何在cmake字符串中进行算术运算
- javascript - 如何在没有 websocket 的情况下通知
- javascript - 如何使用 Facebook Javascript SDK 创建页面帖子?
- python - 使用 Google Cloud Functions 长时间运行的 python 进程