我有一个try except
块,我在其中检查文件权限,而当文件权限太开放时,我的except
块应该返回相应的错误消息。
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except MyError as err:
return {'1': 'Permissions on the .bsm file is too opened'}
我尝试搜索IOError
,但没有发现它与我的用例相关,并且我定义的MyError
引发unresolved reference
错误。
在此处定义的更合适的例外是什么?
我的例外情况应该返回给我一个字典,其中以1
为key
,错误消息为value
。
答案 0 :(得分:2)
在您的例外情况下,应为PermissionError
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except PermissionError as err:
return {'1': str(err)}
答案 1 :(得分:1)
您可以创建一个自定义异常类,扩展基类Exception
的类。
也许是这样的。
class MyError(Exception):
"""
A common exception class
"""
message = 'Some default message'
def __init__(self, message=None):
self.message = message or self.message
super(MyError, self).__init__(self.message)
def is_file_readable():
return False
try:
if not is_file_readable():
raise MyError(message={'cause': 'File not readable'})
except MyError as e:
print(e.message)
答案 2 :(得分:1)
您可以这样编写此函数 解决方案1:
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except Exception as err:
print(err) #if you want to see the error message
return {'1': 'Permissions on the .bsm file is too opened'}
解决方案2: 如果您还想知道文件打开异常。然后试试这个:
try:
fileopen = oct(os.stat(self.file_path).st_mode & 0o700)
if fileopen:
try:
# do something with file path
except Exception as err:
print(err) #if you want to see the error message
return {'1': 'Permissions on the .bsm file is too opened'}
except Exception as e:
print("File open error",e)