Python3.4程序异常判断

实例代码[更多实例,请访问:www.yeayee.com]

 1 #idle中按F5可以运行代码
 2 #引入外部模块 import xxx
 3 #random模块,randint(开始数,结束数) 产生整数随机数
 4 import random
 5 import sys
 6 import os
 7 secret = random.randint(1,10)
 8 temp = input("请输入一个数字\n")
 9 #print(type(temp))#<class ‘str‘> 类型判断
10 #print(isinstance(temp,int))#False
11 #异常处理 try except finally 没有catch函数
12 try:
13     guess = int(temp)
14 except:
15     print("输入的不是数字,程序终止了")#注释内容不能在逻辑代码块里独立一行进行
16     os._exit(0)#os._exit() 用于在线程中退出,sys.exit()用于在主线程中退出,exit(0)#终止退出程序,会关闭窗口
17 count = 0;
18 while guess != secret: #猜错的时候才进入循环条件
19     if count == 0 and guess > secret:
20         print("猜大了")
21     if count == 0 and guess < secret:
22         print("猜小了")
23     temp = input("请重新输入数字\n") #需要在判断之前让用户输入,否则猜对了就直接退出了
24     try:
25         guess = int(temp)
26     except (ZeroDivisionError,Exception):
27         print("输入的不是数字,请重新输入")
28         print(ZeroDivisionError,":",Exception)
29     count += 1 #不能使用count++这种方式
30     if count > 2:
31         print("猜错4次自动退出了")
32         break #退出循环
33     if guess == secret:
34         print("恭喜,你猜对了")
35         print("猜对了也就那样")
36     else:
37         if guess > secret:
38             print("猜大了")
39         else:
40             print("猜小了")
41 print("游戏结束")
42 ----------------------------------
43 请输入一个数字
44 2
45 猜小了
46 请重新输入数字
47 fads
48 输入的不是数字,请重新输入
49 <class ‘ZeroDivisionError‘> : <class ‘Exception‘>
50 猜小了
51 请重新输入数字

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

Python os._exit() sys.exit() exit()区别
Python退出程序的方式有两种:os._exit(), sys.exit()
1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行。

2)sys.exit() 引发一个 SystemExit异常,若没有捕获这个异常,Python解释器会直接退出;捕获这个异常可以做一些额外的清理工作。
0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。
exit() 跟 C 语言等其他语言的 exit() 应该是一样的。
os._exit() 调用 C 语言的 _exit() 函数。
__builtin__.exit 是一个 Quitter 对象,这个对象的 __call__ 方法会抛出一个 SystemExit 异常。

一般来说os._exit() 用于在线程中退出
sys.exit() 用于在主线程中退出。
import os
os._exit(0)

不能直接使用return

python注释内容不能在逻辑代码块里独立一行进行,空格和tab键都是有意义的
if try 等模块下面不能一行内容都没有,编译会认为逻辑有问题报错。

-------------------------------------
python中try except处理程序异常的三种常用方法
方法一:捕获所有异常
try:
    a=b
    b=c
except (ZeroDivisionError,Exception):
        print(ZeroDivisionError,":",Exception)

方法二:采用traceback模块查看异常
#引入python中的traceback模块,跟踪错误
import traceback
try:
    a=b
    b=c
except:
    traceback.print_exc()

方法三:采用sys模块回溯最后的异常
#引入sys模块
import sys
try:
    a=b
    b=c
except:
    info=sys.exc_info()
    print info[0],":",info[1]
但是,如果你还想把这些异常保存到一个日志文件中,来分析这些异常,那么请看下面的方法:
把 traceback.print_exc() 打印在屏幕上的信息保存到一个文本文件中
import traceback
try:
    a=b
    b=c
except:
    f=open("c:log.txt",‘a‘)
    traceback.print_exc(file=f)
    f.flush()
    f.close()

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

1 import traceback
2 #断言assert关键字,程序自动崩溃并抛出AssertionError异常,用在重新中植入检查点
3 assert 4 > 3 #条件正确自动忽略跳过
4 print("pass...")
5 try:
6 assert 3 > 4
7 except (AssertionError):
8 traceback.print_exc()
9 print("after assert...")

输出结果:
pass...
Traceback (most recent call last):
File "F:/kanbox/pythoncode/if_for.py", line 28, in <module>
assert 3 > 4
AssertionError
after assert...

时间: 2024-11-05 20:35:19

Python3.4程序异常判断的相关文章

程序异常监视脚本

这是应朋友要求帮助写的一个简单的程序异常监视脚本,主要通过分析日志文件中的异常信息关键词,检测到关键词则可以认为程序运行异常,重启线程. 脚本依赖linux下的crontab提供的定时器定时执行日志分析脚本. 为了帮助更轻松看懂脚本,这里简单讲解下几个高频的语句. 1.日志时间戳 TIMESTAMP TIMESTAMP=`date +%Y%m%d\ %H:%M:%S` 这里调用shell的基本方法date,按照指定的格式输出时间信息 2.输出信息到日志文件 echo -n "${TIMESTAM

Python3 错误和异常

Edit 笔记内容:Python3 错误和异常 笔记日期:2017-11-12 Python3 错误和异常 语法错误 异常 异常处理 抛出异常 用户自定义异常 finally语句 预定义的清理行为 异常处理机制概述: 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件).通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃. 就好比一个旅游景点,每到一个有可能出现问题情况的地方就会设置一个处理问题的处理

【UWP】不通过异常判断文件是否存在

从WP升到WinRT(Win8/WP8.1/UWP)后所有的文件操作都变成StorageFile和StorageFolder的方式,但是微软并没有提供判断文件是否存在的方法通常的做法我们可以通过下面方式判断文件是否存在 1.通过FileNotFoundException异常判断 public async Task<bool> isFilePresent(string fileName) { bool fileExists = true; Stream fileStream = null; St

Linux C程序异常退出怎么办——core文件帮你忙

想必你一定遇到过Linux下程序异常退出的问题,异常退出貌似有一种神奇的魔力,会让你神经突然紧张.不要怕,Linux是很强大的,在程序退出的时候,会在可执行文件所在的目录生成一个core文件,它很好地记录了一些神秘而又必要的东西,帮助你定位到错误的根源,想想以前面试的时候人家闻到core文件,我答不上来,你说面试官会怎样想,那么就来说说core文件. core文件实际上就是一个内存映象同时加上一些调试信息. 首先,你得打开系统的core文件生成开关吧,终端中输入ulimit -c命令,若显示0表

Wix安装程序中判断是否安装的.net framwork 4.5

Wix安装程序中判断是否安装的.net framwork 4.5 <PropertyRef Id="NETFRAMEWORK40FULL"/> <PropertyRef Id="NETFRAMEWORK45"/> <Condition Message='This setup requires Microsoft .NET Framework 4.0 Full package or greater needs to be installe

qt程序异常结束crashed

今天调试以前写的opencv的程序发现每次一点运行就报错误 Starting D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld.exe...程序异常结束.D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld.exe crashed 但是直接从桌面运行编译出来的程序是可以的,然后郁闷了一晚上,最后突然想起来点运行的时候是不是qtcreator执行了某条命令..

编写程序,判断给定的某个年份是否是闰年。

编写程序,判断给定的某个年份是否是闰年.       闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年.        (2)若某个年份能被400整除,则也是闰年.解答: import java.util.*; public class Bissextile{ public static void main(String[]arge){ System.out.println("please input the nian:"); int year; Scann

在程序异常中记录堆栈信息(使用ExWatcher)

在我们编写程序的时候可通过IDE自带的调试环境捕捉到异常(Except)错误,并能查看到相关的信息以便我们修正程序中的问题.但当软件被发布出去后,因为所部署运行的环境与我们的调试环境有很大区别,即使在是调试环境中测试过非常完美的程序,也很难保证在实际运行中不出现任何错误.当程序发生错误它往往是抛出一个红叉的警告框来告诉我们它出错了,但这对我们来说却像是一个不懂表达的小孩,只是一味的告诉你它身上疼,却不懂得告诉你它哪里疼.怎么样疼.幸好有一个叫ExWatcher的组件能够教会你的小孩怎么说出它身上

android捕获程序异常退出

今天看到迅雷动漫里面一个CrashHandler 的类,我猜是崩溃处理类.进去一看,果然.顺便学习一下. Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 代码: public class CrashHandler implements Un