python【系列教程】之异常处理
【摘要】 一、使用try....except 捕获异常
import systry: a = int(sys.argv[1]) b = int(sys.argv[2]) c = a/b print('您输入的两个数相除的结果是:',c)except IndexError: print('索引错误,运行程序时输入的参数个数不够')except ValueError: pri...
一、使用try....except 捕获异常
import sys
try:
a = int(sys.argv[1])
b = int(sys.argv[2])
c = a/b
print('您输入的两个数相除的结果是:',c)
except IndexError:
print('索引错误,运行程序时输入的参数个数不够')
except ValueError:
print('数值错误,程序只能接收整数参数')
except ArithmeticError:
print('算术错误')
except Exception:
print("未知异常")
#多异常捕获
import sys
try:
a = int(sys.argv[1])
b = int(sys.argv[2])
c = a/b
print('您输入的两个数相除的结果是:',c)
except (IndexError,ValueError,ArithmeticError):
print('程序发生了数组越界,数字格式异常,算术异常之一')
except Exception:
print("未知异常")
#访问异常信息
def foo():
try:
fis = open("a.txt")
except Exception as e:
print(e.args)
print(e.errno)
print(e.strerror)
foo()
# finally 的使用
s = input('请输入除数:')
try:
result = 20 / int(s)
print('20 除以%s的结果是:%g' % (s, result))
except ValueError:
print("值错误")
except ArithmeticError:
print("算术错误")
else:
print("没有出现异常")
finally:
print("资源回收")
# 异常处理嵌套
# 使用raise引发异常
"""raise:单独一个raise,该语句引发当前上下文中捕获的异常,比如在except块中,
或者默认引发RuntimeError异常。
raise 异常类:raise后带一个异常类,该语句引发指定异常类的默认实例
raise 异常对象:引发指定的异常对象
"""
# 自定义异常类
class AuctionException(Exception): pass
# traceback模块来处理异常传播轨迹,使用traceback可以方便的处理python的异常传播
# 轨迹。导入traceback模块之后,traceback提供了两个常用方法
"""
traceback.print_exc() : 将异常传播轨迹信息输出到控制台或指定文件中
format_exc() : 将异常传播轨迹信息转换成字符串
"""
import traceback
class SelfException(Exception): pass
def main():
print("abc")
try:
main()
except Exception as e:
#捕获异常,并将异常传播到控制台
traceback.print_exc()
#捕获异常,并将异常信息输出到指定的文件中
traceback.print_exc(file=open('log.txt', 'a'))
文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31905135/article/details/100667944
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)