python --- 异常处理

简介:   程序的使用者往往会因为错误的输入导致程序崩溃,比如:    程序需要打开一个文件,使用者输入一个不存在的文件名;使用列表时,输入的索引超出列表的范围;使用字典时,输入了一个错误的key...  python中我们使用异常处理来解决这一问题。

  程序的使用者往往会因为错误的输入导致程序崩溃,比如:

    程序需要打开一个文件,使用者输入一个不存在的文件名;使用列表时,输入的索引超出列表的范围;使用字典时,输入了一个错误的key...

  python中我们使用异常处理来解决这一问题。

    比如:

 1 filename = 'abcd.txt' #此文件不存在
 2 list_1 = ['a', 'b', 'c', 'd']
 3 dict_1 = {
 4     'name' : 'John',
 5     'age' : 22,
 6     'gender' : 'M'
 7 }
 8 
 9 try :
10     '''这里写可能会出错的代码'''
11     open(filename, 'r')  #如果这里出错,try中的代码不再执行
12     print(list_1[5])
13     print(dict_1['haha'])
14     print(x)
15 
16 # FileNotFoundError程序书写者提前预估到可能会出现这个错误,后面的下同理
17 except FileNotFoundError as e:
18     '''这里写应对FileNotFoundError的代码'''
19     # 捕捉到FileNotFoundError,执行这里的代码
20     print("打开文件错误, 这个文件不存在")
21     print(e)
22 except IndexError as e:
23     print("列表操作错误,请检查index值")
24     print(e)
25 except KeyError as e:
26     print("字典操作错误,请检查key值")
27     print(e)
28 # 可能会出现未预估到的错误,写在最后
29 except:
30     print("出现未知错误...")
31 else:
32     print("之前try下的那段代码没有出错,执行这里的代码...")
33 finally:
34     print("无论之前的代码是否出错,都执行这里的代码")
35 
36 
37 >>>
38 打开文件错误, 这个文件不存在
39 [Errno 2] No such file or directory: 'abcd.txt'
40 无论之前的代码是否出错,都执行这里的代码
View Code

    我们常常使用这种格式来进行异常处理:       

try:
    #可能出错的代码
except Error as e:
    #应对代码
....
except:
    #出现不可预知错误,提示代码
else:
    #无异常执行完后,应对代码
finally:
    #最终代码

    注意:else和finally为可选,如果用不到可以不写。

    小技巧:异常类型可以通过故意写错某些代码来从pyhon解释器中获得,不必去记忆那些常见异常的总结。

 

自定义异常:

  如果你是一个第三方库的编写者,那么难免需要自定义一些异常,以供库的使用者出现错误操作时获得提示信息,知道是由于那个地方错误导致程序崩溃。

  当然我们自定义的异常也可以被try....except处理

  比如(自定义一个简单的异常并触发它):

 1 #自定义了一个名为TempError的异常
 2 class TempError(Exception):
 3     def __init__(self, msg):
 4         self.message = msg
 5 
 6 
 7 raise TempError("Passed a wrong parameter")
 8 # try:
 9 #     #主动触发这个异常
10 #     raise TempError("Passed a wrong parameter")
11 # #对这个异常进行处理
12 # except TempError as e:
13 #     print(e)
14 
15 
16 >>>
17 Traceback (most recent call last):
18   File "E:/文件/python学习/python学习代码/第六周/test_5.py", line 7, in <module>
19     raise TempError("Passed a wrong parameter")
20 __main__.TempError: Passed a wrong parameter
View Code

  在本例中,我们未做判断便主动触发了这个异常。当然在实际应用中,得首先做逻辑判断(比如传进一个错误的地址,导致数据库连不上),然后在触发这个异常,提示用户。

  注意:在我们编写的库中,不应该做对自己定义的异常的处理,只需要根据情况触发它,提示给库的使用者即可。本例中的只是做一个示范而已。

  我们使用这种格式来定义一个异常:

class TempError(Exception):
    def __init__(self, msg):
        self.message = msg


raise TempError(这个异常的提示信息) #触发这个异常

      用一个继承Exception的类来定义它,用raise触发。

目录
相关文章
|
6月前
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
802 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
4月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
115 27
|
5月前
|
Python
如何处理python的常见异常问题
在Python语言中,python异常处理机制主要依赖try、except、else、finally和raise五个关键字。本篇文章将为大家详细讲解一下如何处理python的常见异常问题。
|
6月前
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
11月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
177 2
|
11月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
191 2
|
7月前
|
人工智能 Shell 开发工具
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
130 32
|
7月前
|
数据库 Python
[oeasy]python066_如何捕获多个异常_try_否则_else_exception
本文介绍了Python中`try...except...else`结构的使用方法。主要内容包括: 1. **回顾上次内容**:简要复习了`try`和`except`的基本用法,强调了异常处理的重要性。 2. **详细解释**: - `try`块用于尝试执行代码,一旦发现错误会立即终止并跳转到`except`块。 - `except`块用于捕获特定类型的异常,并进行相应的处理。 - `else`块在没有异常时执行,是可选的。 3. **示例代码**:通过具体例子展示了如何捕获不同类型的异常(如`ValueError`和`ZeroDivisionError`),并解释了异常处理
138 24
|
7月前
|
数据库连接 开发者 Python
Python中的异常处理
本文深入探讨了Python中的异常处理机制,包括异常的捕获、处理、抛出及最佳实践。通过try-except语句块,程序可以在运行时处理错误,增强健壮性和可维护性。文章还介绍了自定义异常类的创建与使用,并提供了代码示例和详细的语法说明。最后,总结了异常处理的最佳实践,如精确捕获异常、提供有用错误信息等,帮助开发者编写更可靠的代码。
212 14
|
7月前
|
人工智能 数据库 开发者
[oeasy]python068_异常处理之后做些什么_try语句的完全体_最终_finally
介绍了 Python 中 `try` 语句的完全体,包括 `try`、`except`、`else` 和 `finally` 子句的使用。通过实例展示了如何捕获异常并输出详细的错误信息,如文件名和行号。特别强调了 `finally` 子句的作用,无论是否发生异常,`finally` 都会执行,常用于清理操作。最后总结了 `try` 语句的四个部分及其应用场景,并简要提及了 Python 社区的决策机制。 #try #except #else #finally
111 1

推荐镜像

更多