向下转换对象以隐藏低级错误的最佳方法

时间:2015-12-15 16:56:30

标签: python python-3.x error-handling

我有一个包裹mylib.Error的库。好的设计要求它应该隐藏其客户的所有pyodbc知识。这也意味着客户应该处理pyodbc.Error而不是pyodbc.Error。最重要的是,只需在mylib中抓取mylib.Error并将其替换为import pyodbc class DataTruncated(pyodbc.DataError): pass def execute(sql): dbcursor = pyodbc.connect(database="mydb").cursor() try: dbcursor.execute(sql) except pyodbc.Error as e: if 'truncated' in e.args[1]: e.__class__ = DataTruncated raise 就很难看了,因为追溯显示的是级联异常,而不仅仅是一个:

  

pyodbc.DataError :( ...字符串或二进制数据将被截断...')

     

在处理上述异常期间,发生了另一个异常:

     

追踪(最近一次呼叫最后一次):...

因此,隐藏血腥细节的最佳方法是转换异常:

<input type='hidden' name='lang' value='@Path.GetFileName(Server.MapPath(VirtualPath))' />

<input type='submit' value='send'>

有没有更好的方法来解决这个问题?

0 个答案:

没有答案