博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3的异常处理
阅读量:7041 次
发布时间:2019-06-28

本文共 2720 字,大约阅读时间需要 9 分钟。

在python运行的时候难免出现一些异常,但是python在遇到异常的时候就会停止了,但是有时候我们需要python即使在有异常的时候也需要继续向下运行,这个时候我们就需要用到异常处理了.

1.简单的异常处理如:

print(a)Traceback (most recent call last):  File "", line 2, in 
NameError: name 'a' is not defined

我们在没有定义变量a的时候它就会报错,报错是NameError

我们如何让他这样也继续运行下去呢?
运用下异常处理就行了!

try:    print(a)except NameError:    print('NameError 意思就是没有这个变量啊')NameError 意思就是没有这个变量啊

这样即使我们没有定义a这个变量,但是这个程序也能继续往下运行

2.多个异常一起处理:

try:    print(a)    lo        print('试一下异常之后的程序会不会被运行!')except (NameError,SyntaxError) as eor:    print('这个的报错是: %s'%eor)这个的报错是: name 'a' is not defined

这里没有定义a所以是NameError,这个异常处理也是有先后顺序的,如果在异常之后还有程序的话将不会被运行的

a='hello'try:    print(a)    lo        print('试一下异常之后的程序会不会被运行!')except (NameError,SyntaxError) as eor:    print('这个的报错是: %s'%eor)hello这个的报错是: name 'lo' is not defined

小结:

1.异常之后的程序不会被运行;
2.报错的信息可能一样,但是报错的类型是不一样的
如报错信息都是'name 'lo' is not defined' 但是一个是NameError,一个是SyntaxError

3.通用的异常处理

有的时候我们不知道这个程序会有什么报错,这个时候我们就需要用到Execption
这个是所有的报错都是它的子类,它就包括了所有的报错

try:    print(a)except Exception as err:    print(err)name 'a' is not defined

4.如果我们的程序没有异常就执行某个语句,用else

try:    print('a')except NameError as err:    print('这个是NameError语法错误!')except SyntaxError as err:    print('这个是SyntaxError语法错误!')else:    print('这个没错!')a这个没错!

5.无论如何都会执行的finally

try:    print('hello')except NameError:    print('这个是NameError!')except SyntaxError:    print('这个是SyntaxError!')finally:    print('我可不管是对是错我都会执行的!')hello我可不管是对是错我都会执行的!

6.异常处理中抛出的异常

这个的定义就是,程序在运行的过程中可能会出现的异常,我们对着异常进行处理之后(比如记录下来),然后再把这个异常正常的抛出来!

def exce(a,b):    try:        return a/b    except Exception as result:        print('我这里记录下了错误,错误是 --->%s'%result)        print('我这里直接抛出了异常')        raiseexce(5,0)我这里记录下了错误,错误是 --->division by zeroTraceback (most recent call last):我这里直接抛出了异常  File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 427, in 
exce(5,0) File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 422, in exce return a/bZeroDivisionError: division by zero

如果我不抛出异常就没问题了

def exce(a,b):    try:        return a/b    except Exception as result:        print('我这里记录下了错误,错误是 --->%s'%result)        print('我这里直接抛出了异常')        #raiseexce(5,0)我这里记录下了错误,错误是 --->division by zero我这里直接抛出了异常

7.如果有的时候我们需要选择性的抛出异常可以这样写:

class startE:    def __init__(self,choose):        self.choose = choose    def exce(self,a,b):        try:            return a/b        except Exception as result:            if self.choose:                print('我这里记录下了错误,错误是 --->%s'%result)            else:                print('我这里直接抛出了异常')                raiseprint('我这里要打印错误日志')test = startE(True)test.exce(5,0)print('我不打印错误日志,我要抛出异常!')test = startE(False)test.exce(5,0)

这样我们如果不需要抛出异常就为True,如果我们要抛出异常就为False

转载于:https://blog.51cto.com/853056088/2159958

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
js 取消回车事件
查看>>
将项目从JBOSS 6 迁移到 JBOSS 7所遇到的问题
查看>>
基于codis-ha的小改动,主备切换后刷新Slave
查看>>
用户管理
查看>>
主机信息收集工具DMitry
查看>>
轻量级Web渗透测试工具jSQL
查看>>
本地web访问linux虚拟机服务器报403错误
查看>>
varnish 页面跳转
查看>>
CentOS7.5安装Gitlab11.0及汉化
查看>>
C#程序代码中常用的快捷键
查看>>
进程控制(学习笔记)
查看>>
hibernate中sorted collection和ordered collection区别
查看>>
“***”眼中云计算的“五大漏洞”
查看>>
网页练习
查看>>
JAVA继承和组合
查看>>
编写一个c语言程序 将一串字符串倒叙存放后输出
查看>>
网页设计师和网页前端开发我该选择哪一个
查看>>
我的友情链接
查看>>