What do programmers mean when they say “raise an error” (example, why do this)?
我正在通过一个Python教程,来到了一个介绍错误的部分(熟悉错误,不要在事情发生时惊慌失措,等等)。在深入研究了一些错误之后,我看到了短语"引发错误"和"引发异常"。
这是一个特定的功能吗?如果是这样,"提出错误"有什么好处?在可视化这一点时,似乎在运行时执行代码时产生的错误被提升到其他代码之上…有人能帮我把这个拼凑起来吗?
事先谢谢!
引发错误是程序员以非常具体的方式说"出了问题"的一种方式。打个比方,当足球比赛中的旗子被掷出去时,就意味着已经被罚了。比赛结束后,裁判员将准确地说出判罚内容(持球、传球、干扰等)以及谁是有罪的一方。
在编程中,惩罚相当于错误抛出,惩罚类型是错误类型,有罪的一方是基于程序员提供的诊断(编程语言之间存在很大差异)。
当程序员提到引发一个错误时,它意味着捕获一个意外的行为,什么事情出错了。作为Python中的一个简单示例:
1 2 3 4 5 | int('a') >> ----> 1 int('a') ValueError: invalid literal for int() with base 10: 'a' |
这是有意义的,因为直观地说,除非在某个地方明确定义,否则您不会期望任何程序将像
一个IRL的例子是你的车,如果你的汽油量低,你会通过仪表板显示屏上的指示器得到通知,这就像一个通知的形式,让你知道你的汽油量低,这让你可以做出一个明智的决定。同样地,当你编程时,会出现好的错误,告诉你某些东西没有相应地工作,并允许你就如何管理或减轻它做出一个明智的决定。
举个例子:
1 2 3 4 5 6 7 8 | def multiply(a, b): try: return int(a) + int(b) except ValueError as e: print('{}, one or both inputs cannot be converted'.format(e)) multiply('1', 'a') >> invalid literal for int() with base 10: 'a', one or both inputs cannot be converted |
因为有一个EDOCX1[1]被提升了,所以我可以抓住它并通知用户其中一个输入失败了。如果什么也没提,那就好比驾驶你的车不知道汽油什么时候用完,导致你困惑。
这些错误是如何产生的?如果我有一个函数来检查一个值是否在10的范围内,我可以这样做:
1 2 3 4 5 | def in_range_10(n): for i in range(1,11): if i == n: return i raise IndexError(n) |
从1到10的每个值都将返回值本身,因为它在范围内,但如果该值超过10,则
1 2 3 4 5 6 7 | in_range_10(11) >> ... 3 if i == n: 4 return i ----> 5 raise IndexError(n) IndexError: 11 |
您可以将其视为:您希望在看到火灾(错误情况)时立即发出警报(异常)。
参考:https://docs.python.org/2.0/ref/raise.html网站
也指:在python中手动引发(引发)异常