程序异常

第九章:程序异常

异常:程序执行的时候,出现了错误
出现了异常,程序报错,然后中断执行。
异常是程序错误的一种。
常见的异常报错:
NameError: name ‘a’ is not defined
在这里插入图片描述
出现异常不是好事,尤其是在上线的程序里面。
尤其是对于服务器端来说,出现了未铺货的异常,服务器进程完蛋了。
定时任务:linux:crontab
异常信息:会有堆栈

try:
    1/0
    print("hello")
    print("hello")
except TypeError:
    print("error occur!")
except ZeroDivisionError:
    print("ZeroDivisionError occur")
print("done!")

在这里插入图片描述

try:
    int("a")
    print("hello")
    print("hello")
except ValueError:
    print("Value error!")
except ZeroDivisionError:
    print("ZeroDivisionError occur")
print("done!")

在这里插入图片描述
异常只会被拦截一次,拦截后,后面的except都不会被执行了,成灰会在except语句后,跳出try、、、except、、、
后继续执行后续的代码。
练习题:请输入2个数字,相加,打印结果,(用户输入的数据不确定,但是程序不能奔溃),如果输入的不是数字,那么让用户在重新输入。

result = ""
while 1:
    try:
        a=float(input("请输入一个数字a:"))
        break
    except:
        print("输入的不是数字类型,请重新输入")
while 1:
    try:
        b=float(input("请输入一个数字b:"))
        break
    except:
        print("输入的不是数字类型,请重新输入")
result =a+b
print(result)

在这里插入图片描述

Try:
可能出错的代码块
Except XXX异常1:
当异常出现的时候的处理代码
Except:
当异常出现时候的处理代码

try:
  1/0
except TypeError:
    print("TypeError occor!")
except ValueError:
    print("ValueError occur!")
except:
print("Unknown error occur!")

在这里插入图片描述

1、Except应该放在最后面
try:
  1/0
except TypeError:
    print("TypeError occor!")
except ValueError:
    print("ValueError occur!")
except Exception as e:
print("e.message")

在这里插入图片描述

2、打印出现异常的原因
try:
  1/0
except TypeError:
    print("TypeError occor!")
except ValueError:
    print("ValueError occur!")
except Exception as e:
    print(e)

在这里插入图片描述

3、查看异常是什么(堆栈)
def func():
    1/0
def func2():
    func1()
func2()

在这里插入图片描述
Import traceback将程序异常的堆栈都打印出来了
import traceback

def func():
    1/0
def func2():
    func1()
try:
    func2()
except Exception as e:
    traceback.print_exc()

print("Done!")

在这里插入图片描述

4、 抛出异常
import traceback
def func1():
    if 1==1:
        raise ZeroDivisionError
def func2():
    func1()
try:
    func2()
except Exception as e:
    traceback.print_exc()

print("Done!")

在这里插入图片描述

5、不建议使用如下结构

在这里插入图片描述
建议:针对每种可能出现的异常,正确的提示用户。
目录:

>>> import os
>>> os.getcwd()
'/Users/sunqianli'
>>> os.chdir("/Users/sunqianli")
>>> os.getcwd()
'/Users/sunqianli'
>>> os.chdir("/Users/sunqianli/Desktop")
>>> os.getcwd()
'/Users/sunqianli/Desktop'
>>> os.listdir()

在这里插入图片描述

6、当前目录下文件数量总和(只有一级目录)
import os
import os.path
file_count = 0
dir_count = 0
for i in os.listdir("/Users/sunqianli/Desktop"):
    if os.path.isdir(i):
        dir_count+=1
    else:
        file_count+=1
print(file_count)
print(dir_count)

在这里插入图片描述

>>> import os
>>> os.mkdir("/Users/sunqianli/Desktop/s1")
>>> os.chdir("/Users/sunqianli/Desktop/s1")
>>> os.getcwd()
'/Users/sunqianli/Desktop/s1'
>>> os.mkdir("s2")
>>> os.chdir("s2")
>>> os.mkdir("s3")
>>> os.listdir()
['s3']

在这里插入图片描述

7、程序建立一个10级的目录pic1到pic10
Root_dir = “e:\\pic”
Os.chdir(“e:\\pic”)
For I in range(1,11):
Os.mkdir(“pic”+str(i))
Os.chdir(“piic”+str(i))

8、创建多级目录:(目录要为空的)
Import os
Os.makedirs(“e:\\pic1\\test\\1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值