某些IO操作会产生一些错误。重要的是,这不是一个异常(exception),而是要设置的。因此,我们为套接字错误设置了,为文件io设置了。如何处理不同IO操作之间没有交集的异常组?
例如,OSError
处理文件io错误和某些(?)套接字错误。
我只有一个解决方案:使用try-except包装io操作并引发用户定义的异常。
def foo():
try:
# some file io
except:
raise MyFileIOException(reason=sys.exc_info())
try:
# some socket io
except:
raise MySocketIOException(reason=sys.exc_info())
def bar():
try:
foo()
except MyFileIOException as exc:
# handle
except MySocketIOException as exc:
# handle
有没有更好更好的解决方案?
最佳答案
我认为,您已经编写了不错的异常处理程序。而且,这取决于场景。比如说。如果要在库中创建函数,则建议不要在库函数中引入任何特定于应用程序/域的异常类型,而仅引发原始/本地异常类型。当应用程序代码将使用该函数时,它有责任声明自己的异常类型集并将库中生成的异常包装为自己的类型。
例如。图书馆代码
def WriteToFile(strFile, strCnt):
objFile = open(strFile, "w")
objFile.write(strCnt)
objFile.close()
StudentRecord申请代码
import library # import our library in which SaveStudent is present
import sys
def SaveStudent(objStudent):
try:
WriteToFile("studentRec.txt", str(objStudent))
except IOError as e:
raise StudentSaveFailedException, None, sys.exc_info()[2]
现在,在应用程序的异常处理程序组件中处理此异常,该组件将有意义地处理此异常并采取必要的纠正措施。
尽管我知道这是一个幼稚的解释,但这是大型应用程序中使用的策略,该策略使用多个内部和第三方库进行适当的异常处理。
希望对您有帮助。
关于python - 分别处理特定(针对io)的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689252/