python中try except处理程序异常的三种常用方法

转载自:http://www.pythontab.com/html/2013/pythonjichu_0204/210.html



如果你在写python程序时遇到异常后想进行如下处理的话,一般用try来处理异常,假设有下面的一段程序:

1
2
3
4
5
6
7
8
try :
     语句 1
     语句 2
     .
     .
     语句N
except  .........:
     do something .......

但是你并不知道"语句1至语句N"在执行会出什么样的异常,但你还要做异常处理,且想把出现的异常打印出来,并不停止程序的运行,所以在"except ......"这句应怎样来写呢?

总结了一下3个方法

方法一:捕获所有异常

1
2
3
4
5
try :  
     a = b  
     b = c  
except  Exception,e:  
     print  Exception, ":" ,e

方法二:采用traceback模块查看异常

1
2
3
4
5
6
7
#引入python中的traceback模块,跟踪错误
import  traceback  
try :  
     a = b  
     b = c  
except :  
     traceback.print_exc()

方法三:采用sys模块回溯最后的异常

1
2
3
4
5
6
7
8
#引入sys模块
import  sys  
try :  
     a = b  
     b = c  
except :  
     info = sys.exc_info()  
     print  info[ 0 ], ":" ,info[ 1 ]

但是,如果你还想把这些异常保存到一个日志文件中,来分析这些异常,那么请看下面的方法:

把 traceback.print_exc() 打印在屏幕上的信息保存到一个文本文件中

1
2
3
4
5
6
7
8
9
import  traceback
try :  
     a = b  
     b = c  
except :  
     f = open ( "c:log.txt" , 'a' )  
     traceback.print_exc( file = f)  
     f.flush()  
     f.close()


  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,以下是一个使用try-except语句处理程序异常Python程序示例: ```python try: # 可能会发生异常的代码 num1 = int(input("请输入一个整数:")) num2 = int(input("请输入另一个整数:")) result = num1 / num2 print("结果为:", result) except ValueError: # 处理值错误异常 print("输入的不是整数,请重新输入!") except ZeroDivisionError: # 处理除以零异常 print("除数不能为零,请重新输入!") except Exception as e: # 处理其他所有异常 print("程序出现了异常:", e) finally: # 不论是否发生异常,都会执行的代码 print("程序执行完毕!") ``` 在这个程序,我们使用了try-except语句来捕获可能会发生的异常,包括值错误异常和除以零异常。同时,我们也使用了一个except语句来处理所有其他的异常,并打印出了异常的信息。最后,使用了一个finally语句,不论是否发生异常,都会执行其的代码,这里我们打印出了程序执行完毕的信息。 ### 回答2: 下面是一个Python程序的示例,展示了如何使用try except语句来处理程序异常。 ``` try: num1 = int(input("请输入一个整数: ")) num2 = int(input("请输入另一个整数: ")) result = num1 / num2 print("两数相除的结果是: ", result) except ValueError: print("输入的不是有效的整数,请重新输入。") except ZeroDivisionError: print("除数不能为零,请重新输入。") except Exception as e: print("程序发生了一个异常: ", e) ``` 在这个程序,我们通过try语句来执行可能会引发异常的代码。如果try代码块的任何一行引发了异常,程序将立即跳到相应的except代码块。 在上面的示例,我们使用了三个except代码块来处理不同类型的异常。第一个except代码块处理输入无效整数时引发的`ValueError`异常,第二个except代码块处理除以零时引发的`ZeroDivisionError`异常。 最后一个except代码块是一个通用的异常处理程序,它可以捕获任何其他类型的异常。使用`as`关键字,我们将引发的异常对象命名为`e`,并在except代码块打印出异常信息。 通过使用try except语句,我们可以更好地控制程序在发生异常时的行为,避免程序崩溃并提供更友好的错误消息。 ### 回答3: 以下是一个使用Python编写的示例程序,演示了如何使用try-except语句来处理程序异常: ```python try: # 尝试执行可能会引发异常的代码 num1 = int(input("请输入第一个整数: ")) num2 = int(input("请输入第二个整数: ")) result = num1 / num2 print("两个数相除的结果为:", result) except ValueError: print("输入的不是有效的整数,请重新输入。") except ZeroDivisionError: print("除数不能为0,请重新输入。") except Exception as e: print("发生了其他未知异常:", str(e)) ``` 在上面的示例,我们尝试将两个输入的整数相除。try语句块包含可能引发异常的代码,例如使用`int()`将输入的字符串转换为整数,以及进行除法运算。如果在try语句块的代码块引发了异常,那么程序会跳转到对应的except语句块。 在这个示例,我们定义了三个except语句块来处理可能的异常情况: 1. ValueError:当用户输入无效的整数时,例如输入的是一个非数字字符,会引发ValueError异常。 2. ZeroDivisionError:如果用户试图将一个数字除以0,则会引发ZeroDivisionError异常。 3. Exception:这是一个通用的异常处理块,用于处理其他未知的异常情况。我们使用`as`关键字将异常对象赋值给变量`e`,并打印该异常的字符串表示。 您可以在运行程序时尝试不同的输入,以测试不同的异常情况。当遇到异常时,程序会根据异常的类型跳转到相应的except语句块,并输出相应的错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值