Python_Scrapy_6.错误与异常
来源:互联网 发布:网络机顶盒哪个最好 编辑:程序博客网 时间:2024/06/11 16:27
看了一下官方教程的第二部分,发现用了异常处理机制.因为我的学习计划是围绕着项目进行了,技能点不够用了就去打打怪提升下等级.
0.编程时会出现的错误和异常
a.代码本身的错误,也就是bug.比如 字符串少打了一个引号,引起的语法错误.
b.代码使用者错误的使用代码而产生的问题. 比如需要带入整数的却带入字符串
c.使用代码是因为运行环境的差异而导致的问题. 比如向硬盘里写入数据时硬盘满了或者坏了.
1.try...except...finally
a.基本的使用方法
try...except...finaly 和if,else一样是控制流语句. 先会运行try中的代码,如果某一行代码出现了异常那么就会转跳到except的代码块中,不管程序是否报错都会执行finally中的代码.
# coding:gbktry: # 错误的路径 f = open(r'C:\Fallout4.txt') print('1') print('2') print('3') print(f.read())except: print('哦偶,哪里弄错了.')finally: print('退出程序')
返回的结果:
哦偶,哪里弄错了.退出程序# coding:gbktry: # 正确的路径 f = open(r'C:\test\Fallout4.txt') print('1') print('2') print('3') print(f.read())except: print('哦偶,哪里弄错了.')finally: print('退出程序')
返回的结果<span style="font-size:18px;"><span style="font-size:18px;">123shut up and take my money.退出程序</span></span>except还可以加两个参数,需要捕获的错误,和一个错误的原因. 如果有两个except语句,try中的语句快同时又这两个错误,Python只会捕获第一个产生异常(因为直接转跳了).
# coding:gbktry: # 错误的路径 a f = open(r'C:\Fallout4.txt') print('1') print('2') print('3') print(f.read())except NameError, e: print('哦偶{0}'.format(e))except IOError, e: print('哦偶{0}'.format(e))finally: print('退出程序'
2.raise
Python认为一切正常,你却需要程序报错要什么办呢? 用raise自己引发一个异常.
# coding:gbkclass FooError(StandardError): passdef foo(s): n = int(s) if n == 1: raise FooError('invaild value:{0}'.format(s)) return 10/nfoo(1)结果
Traceback (most recent call last): File "C:/Users/bin/PycharmProjects/untitled1/test_raise.py", line 12, in <module> foo(1) File "C:/Users/bin/PycharmProjects/untitled1/test_raise.py", line 9, in foo raise FooError('invaild value:{0}'.format(s))__main__.FooError: invaild value:1
3.with...as
with...as 语句是try...except...finally的简化版, with之后跟着特殊的对象 as 一个变量赋值给了那个特殊的变量.
with open(r'c:\test\Fallout4.txt') as anything : print (anything.read())具体可以看下面两个链接:
使用 with as
详细的说明
0 0
- Python_Scrapy_6.错误与异常
- 反射、错误与异常
- Java -- 错误与异常
- 异常与错误处理
- 错误与异常处理
- 异常与错误处理
- 错误与异常处理
- 错误与异常处理
- 错误与异常处理
- 异常与错误
- Lua 错误与异常
- 异常与错误1
- Python错误与异常
- 错误与异常
- 异常与错误0919
- python 错误与异常
- 错误与异常
- PHP错误与异常
- CSS从大图中抠取小图完整教程(background-position应用)
- Android优化系列——控件优化(ListView 异步加载图片优化,SoftReference)
- Fedora22安装后的一些必要操作
- Delphi7 动态数组
- c#中发送邮件
- Python_Scrapy_6.错误与异常
- 黑马程序员<Java笔记<IO流>>
- Servlet--ServletConfig接口,GenericServlet类
- 二叉树 各种遍历算法
- OC坑集: ARC 下覆写 setter/getter
- joor,一个基于fluent API设计的反射API
- 《重构》第一章 笔记
- HDU 数塔 (dp)
- android studio上传代码到github