python3的异常处理

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

print(a)
Traceback (most recent call last):
  File "<input>", line 2, in <module>
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(‘我这里直接抛出了异常‘)
        raise
exce(5,0)

我这里记录下了错误,错误是 --->division by zero
Traceback (most recent call last):
我这里直接抛出了异常
  File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 427, in <module>
    exce(5,0)
  File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 422, in exce
    return a/b
ZeroDivisionError: division by zero

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

def exce(a,b):
    try:
        return a/b
    except Exception as result:
        print(‘我这里记录下了错误,错误是 --->%s‘%result)
        print(‘我这里直接抛出了异常‘)
        #raise
exce(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(‘我这里直接抛出了异常‘)
                raise
print(‘我这里要打印错误日志‘)
test = startE(True)
test.exce(5,0)
print(‘我不打印错误日志,我要抛出异常!‘)
test = startE(False)
test.exce(5,0)

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

原文地址:http://blog.51cto.com/853056088/2159958

时间: 2024-08-03 01:30:21

python3的异常处理的相关文章

Python3 的异常处理

Python3 的异常处理,在官方文档的 tutorial 中有说明. 这里把常用的异常处理方法都列出来,方便平时查找. 捕获异常基类 Python3 要求我们的异常必须继承 Exception 类.Built-in 的所有异常也都是继承自这个类.因此,我们只需要捕获这个类的实例,就可以捕获所有的异常. try: raise except Exception as err: print(err) 使用 sys.exc_info() 和 sys.last_traceback sys.exc_inf

【Python3之异常处理】

一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: invalid syntax #语法错误示范 def test: pass #语法错误示范 class Foo pass #语法错误示范 print(haha 其他语法错误 逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") in

python3之异常处理(转)

一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: invalid syntax  其他语法错误 逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) 输出 >>: fsf Traceback (most recent call last): File

python3之异常处理

1.语法错误与异常 (1)语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例: >>> while True print('Hello world') File "<stdin>", line 1, in <module> while True print('Hello world') ^ SyntaxError: invalid syntax 这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒

Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转载

urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看. python3 抓取网页资源的 N 种方法 1.最简单 import urllib.requestresponse = urllib.request.urlopen('http://python.org/')html = res

Python3学习之异常处理详解

本文和大家分享的主要是python3中的异常及相关解决方法,一起来看看吧,希望对大家学习python3有所帮助. 一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 . 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: invalid syntax #语法错误示范def test: pass #语法错误示范class Foo pass #语法错误示范 print(haha 其他语法错误 . 逻辑错误 #用户

【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看. python3 抓取网页资源的 N 种方法 1.最简单 1 import urllib.request 2 3 response = urllib.request.urlopen('http://python.org/') 4

Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看. python3 抓取网页资源的 N 种方法 1.最简单 1 import urllib.request 2 3 response = urllib.request.urlopen('http://python.org/') 4

python3.x的异常处理

以前的python2.x的时候: try: fp=urllib.request.urlopen(blogurl) except Exception, e: print (e) print('download exception %s' % blogurl) return 0 现在python3.x的时候: try: fp=urllib.request.urlopen(blogurl) except Exception as e: print (e) print('download excepti