Python中文
首页
教程
问答
标签
搜索
登录
注册
异常处理:将其置于什么级别
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>这是一个有点笼统和概念性的问题,不确定它是否在范围内,但我会试一试</p> <p>我曾多次遇到类似以下的情况,但我一直不知道如何处理</p> <p>我有几个函数,它们在某种层次结构中相互调用。我想处理函数的错误输入,但有些函数永远不会直接调用其他函数</p> <p>例如,我有以下功能:</p> <pre><code>def getDataSourcesOfTypes(username, datatypes): if len(datatypes) < 1: raise ValueError("Please specify at least 1 datatype") http = authorizeHttp(username) ...snip... return data_sources_list </code></pre> <p>这就叫:</p> <pre><code>def authorizeHttp(username): if not isinstance(username, str): raise ValueError("Invalid username.") credential_json = Database.getCredential(username) ...snip... </code></pre> <p>这又称之为:</p> <pre><code>def getCredential(username): Database.connection.row_factory = sqlite.Row # @UndefinedVariable cursor = Database.connection.cursor() ...snip... result = cursor.fetchone() if result is None: raise LookupError("Username does not exist.") else: ...snip... </code></pre> <p>现在,对于<code>username</code>,我有几个机会抓住一个坏的机会(即不是字符串,不存在,等等)。显然,在调用最后一个函数之前,我无法捕捉到它没有出现在数据库中的错误,但是我可以早在第一个函数中捕捉到一个<code>None</code></p> <p>问题是:哪里是捕捉异常的最佳位置?在层次结构最下面的级别?尽快</p> <p>同样,我认为这可能是一个太主观的问题,所以,但我真的很好奇什么是被认为是最佳实践</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我会说,作为一般规则,最接近错误的真正来源,在那里它可以(可能)得到适当的处理。如果这是一个错误的输入,那么在输入的级别(可能是以链接的方式)。如果这是字典中缺少键的预期异常,那么立即捕获它。等等</p> <p>但当然,还有更多</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
1 回答
我想从用户导入值,为此
6 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
6 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
5 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
10 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
5 回答
我想从第一个空lin开始解析文本文件
3 回答
我想从简历、简历中提取特定部分
4 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
10 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
2 回答
我想从网上搜集一些关于抵押贷款的数据
7 回答
我想从网站上删除电子邮件地址
9 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
6 回答
我想从网站中提取数据,然后将其显示在我的网页上
6 回答
我想从网页上提取统计数据。
10 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
4 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
8 回答
我想从课堂上打印字典里的键
6 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
6 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
9 回答