一、使用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