zoukankan      html  css  js  c++  java
  • Python_Mix*异常处理

    1 name
    2 结果为:
    3 Traceback (most recent call last):   #错误的追溯   
    4   File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 1, in <module>   #xx文件的xx行
    5     name        #xx句
    6 NameError: name 'name' is not defined    
    7 #错误类型          具体的错误内容

    以上是使用PyCharm执行代码时会报错的一个例子.

     1 def func1():name
     2 
     3 def func2():
     4     func1()
     5 
     6 def main():
     7     func2()
     8 
     9 main()
    #在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分
    10    
    11 结果为:
    12 Traceback (most recent call last):
    13   File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 9, in <module>
    14     main()
    15   File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 7, in main
    16     func2()
    17   File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 4, in func2
    18     func1()
    19   File "C:/Users/Mi/PycharmProjects/untitled/Practice/练习.py", line 1, in func1    #多行异常的时候  看最后一行的内容
    20     def func1():name
    21 NameError: name 'name' is not defined

    以上是多行报错的一个例子.

    =============================================================================================================

    异常处理

    单分支

     l = ['login','register']
    for num,i in enumerate(l,1):
         print(num,i)
    
    try:                               #try和except之间是被异常处理机制包围的代码,只有这段代码出现异常,才会处理.一但这段代码出现异常,程序会继续往下走.
         num = int(input('num >>>'))
         print(l[num - 1])
     except ValueError :      # except处理的异常必须和实际报错的异常是相同的
         print('请输入一个数字')
    print(l[num - 1])

    多分支

     1 l = ['login','register']
     2 for num,i in enumerate(l,1):
     3     print(num,i)
     4 
     5 try:
     6     num = int(input('num >>>'))
     7     print(l[num - 1])
     8 except ValueError :
     9     # 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
    10     print('请输入一个数字')
    11 except IndexError :
    12     # 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
    13     print('只能输入1或2')

    多分支合并

    1 l = ['login','register']
    2 for num,i in enumerate(l,1):
    3     print(num,i)
    4 
    5 try:
    6     num = int(input('num >>>'))
    7     print(l[num - 1])
    8 except (ValueError,IndexError) :    #做相同的处理时,可以将异常合并
    9     print('您输入的内容不合法')

    万能异常

     1 def buy():
     2     print('buy')
     3     name
     4 
     5 def back():
     6     print('back')
     7     [][1]
     8 
     9 def show():
    10     print('show')
    11     1/0
    12 
    13 def main():
    14     l = [('购物',buy),('退货',back),('查看订单',show)]
    15     while True:
    16         for num,i in enumerate(l,1):
    17             print(num,i[0])
    18         num = int(input('num >>>'))
    19         print(l[num - 1])
    20         try:
    21             func = l[num - 1][1]
    22             func()
    23         except Exception:
    24             print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
    25 
    26 main()

    as语法

     1 # as语法  能够将具体错误信息打印出来
     2 def buy():
     3     print('buy')
     4     name
     5 
     6 def back():
     7     print('back')
     8     [][1]
     9 
    10 def show():
    11     print('show')
    12     1/0
    13 
    14 def main():
    15     l = [('购物',buy),('退货',back),('查看订单',show)]
    16     while True:
    17         for num,i in enumerate(l,1):
    18             print(num,i[0])
    19         num = int(input('num >>>'))
    20         print(l[num - 1])
    21         try:
    22             func = l[num - 1][1]
    23             func()
    24         except Exception as e:
    25             print(e)
    26             #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
    27             print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
    28 
    29 main()
  • 相关阅读:
    CSUOJ 1525 Algebraic Teamwork
    CSUOJ 1531 Jewelry Exhibition
    CSUOJ 1532 JuQueen
    POJ 2195 Going Home
    hiho week 37 P1 : 二分·二分查找之k小数
    POJ 2186 Popular Cows
    ZOJ 2532 Internship
    RQNOJ PID496/[IOI1999]花店橱窗布置
    POJ 3026 Borg Maze
    laravel框架总结(五) -- 服务提供者(提及契约Contracts)
  • 原文地址:https://www.cnblogs.com/mixw/p/9523778.html
Copyright © 2011-2022 走看看