实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承。

1.自定义异常类型

#1.用户自定义异常类型,只要该类继承了Exception类即可,至于类的主题内容用户自定义,可参考官方异常类
class TooLongExceptin(Exception):
"this is user's Exception for check the length of name "
def __init__(self,leng):
self.leng = leng
def __str__(self):
print("姓名长度是"+str(self.leng)+",超过长度了")

2.如何手动抛出异常:raise

系统的自带的异常只要触发会自动抛出,比如NameError,但用户自定义的异常需要用户自己决定什么时候抛出。
raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。大多数的异常的名字都以"Error"结尾,所以实际命名时尽量跟标准的异常命名一样。

#1.用户自定义异常类型
class TooLongExceptin(Exception):
"this is user's Exception for check the length of name "
def __init__(self,leng):
self.leng = leng
def __str__(self):
print("姓名长度是"+str(self.leng)+",超过长度了") #2.手动抛出用户自定义类型异常
def name_Test():
name = input("enter your naem:")
if len(name)>4:
raise TooLongExceptin(len(name)) #抛出异常很简单,使用raise即可,但是没有处理,即捕捉
else :
print(name) #调用函数,执行
name_Test()
-----------------执行时满足条件后抛出一个用户定义的异常如下:--------------------------------------
enter your naem:是打发斯蒂芬
Traceback (most recent call last):
姓名长度是6,超过长度了
File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 21, in <module>
name_Test()
__main__.TooLongExceptin: <exception str() failed>

3.捕捉用户手动抛出的异常

#1.捕捉用户手动抛出的异常,跟捕捉系统异常方式一样
def name_Test():
try:
name = input("enter your naem:")
if len(name)>4:
raise TooLongExceptin(len(name))
else :
print(name) except TooLongExceptin,e_result: #这里异常类型是用户自定义的
print("捕捉到异常了")
print("打印异常信息:",e_result) #调用函数,执行
name_Test()
==========执行结果如下:==================================================
enter your naem:aaafsdf
捕捉到异常了
Traceback (most recent call last):
打印异常信息: 姓名长度是7,超过长度了
姓名长度是7,超过长度了
File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 16, in name_Test
raise TooLongExceptin(len(name))
__main__.TooLongExceptin: <exception str() failed> During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 26, in <module>
name_Test()
File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 22, in name_Test
print("打印异常信息:",e_result)
TypeError: __str__ returned non-string (type NoneType)

来自:https://blog.csdn.net/qq_26442553/article/details/81783223

最新文章

  1. Windows Server 2003 服务器备份和恢复技巧
  2. 将一个query后面的参数转为数组
  3. 使用yield关键字来提高性能
  4. 自定义MVC Html
  5. 如何利用百度地图JSAPI画带箭头的线?
  6. Leetcode#146 LRU Cache
  7. ECSide标签属性说明之&lt;ec:column&gt;
  8. 【转】开源C/C++网络库比较
  9. Lua function 函数
  10. 解决 SQLSERVER 2008 无法删除作业
  11. 【转】Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
  12. 新建cocos2d-xproject
  13. poj 2632 Crashing Robots_模拟
  14. java maven compiler设置默认1.8
  15. [转]简单科普私钥、地址、助记词、Keystore的区别
  16. iOS 第三方框架-SDWebImage
  17. linux实现开机自启动脚本
  18. leetcode235
  19. Maven学习(十四)-----Maven 构建配置文件
  20. IP地址转换32为长整型

热门文章

  1. 洛谷 P2762 太空飞行计划问题 【最大权闭合子图+最小割】
  2. bzoj 3052: [wc2013]糖果公园【树上带修改莫队】
  3. cmdb客户端服务器信息采集一
  4. 1475 建设国家 DP
  5. [转]Visual F# Samples and Walkthroughs
  6. Maximum Subsequence Sum 最大子序列和的进击之路
  7. IIS 安装了.net framework 4.0/4.5 却找不到相应应用程序池
  8. React全家桶之一 react-router之高级
  9. ScrollView属性
  10. vba,设置,excel,wps ,页面设置例子