python try except作用_python try except有什么用?

try…except

有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。使用try…except,这样程序就不会因为异常而中断。把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except。

a=10

b=0

try:

c=a/b

print(c)

exceptZeroDivisionErrorase:

print(e)

print("done")

运行:

divisionbyzero

done

可以看出在有异常的情况下,程序依然执行完毕。

2.try…except…else

try…except…else语句,当没有异常发生时,else中的语句将会被执行。

a=10

b=0

try:

c=b/a

print(c)

except(IOError,ZeroDivisionError)asx:

print(x)

else:

print("noerror")

print("done")

运行:

0.0

noerror

done

3.raise引发一个异常

raise是引发一个异常来检查某个条件是否成立。

inputValue=4.2

iftype(inputValue)!=type(1):

raiseValueError

else:

print(inputValue)

运行:

...

raiseValueError

ValueError

4.try…finally

无论异常是否发生,在程序结束前,finally中的语句都会被执行。

a=10

b=0

try:

print(a/b)

finally:

print("alwaysexcute")

运行:

alwaysexcute

Traceback(mostrecentcalllast):

...

print(a/b)

ZeroDivisionError:divisionbyzero

可以看出finally最终执行,异常也照常报错。

5.try…except…finally

a=10

b=0

try:

print(a/b)

except:

print("error")

finally:

print("alwaysexcute")

结果:

error

alwaysexcute

6.自定义一个异常类

自定义一个MyException类,继承Exception。

classMyException(Exception):

def__init__(self,message):

Exception.__init__(self)

self.message=message

a=9

ifa<10>

try:

raiseMyException("myexcepitionisraised")

exceptMyExceptionase:

print(e.message)

结果:

myexcepitionisraised

7.把异常保存到一个日志文件中,来分析这些异常:

importtraceback

try:

print('here1:',5/2)

print('here2:',10/5)

print('here3:',10/0)

exceptExceptionase:

f=open("log.txt",'a')

#traceback.print_exc(file=f)#打印输出到屏幕

traceback.print_exc(file=f)#输出到文件

f.flush()

f.close()

结果:

here1:2.5

here2:2.0

会生成一个log.txt的文件。

8.捕获异常的小方法

方法一:捕获所有异常

a=10

b=0

try:

print(a/b)

exceptExceptionase:

print(Exception,":",e)

finally:

print("alwaysexcute")

运行:

alwaysexcute

方法二:采用traceback模块查看异常

importtraceback

try:

print('here1:',5/2)

print('here2:',10/5)

print('here3:',10/0)

exceptExceptionase:

traceback.print_exc()

运行:

here1:2.5

here2:2.0

Traceback(mostrecentcalllast):

File"/Users/lilong/Desktop/online_release/try_except_use.py",line59,in

print('here3:',10/0)

ZeroDivisionError:divisionbyzero

方法三:采用sys模块回溯最后的异常

importsys

try:

print('here1:',5/2)

print('here2:',10/5)

print('here3:',10/0)

exceptExceptionase:

info=sys.exc_info()

print(info[0],":",info[1])

运行:

here1:2.5

here2:2.0

注意:万能异常Exception被检测的代码块抛出的异常有多种可能性,并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception,除非要对每一特殊异常进行特殊处理。

9.python所有的标准异常类:

异常名称描述BaseException:所有异常的基类SystemExit:解释器请求退出KeyboardInterrupt:用户中断执行(通常是输入^C)Exception:常规错误的基类StopIteration:迭代器没有更多的值GeneratorExit:生成器(generator)发生异常来通知退出SystemExitPython:解释器请求退出StandardError:所有的内建标准异常的基类ArithmeticError:所有数值计算错误的基类FloatingPointError:浮点计算错误OverflowError:数值运算超出最大限制ZeroDivisionError:除(或取模)零(所有数据类型)AssertionError:断言语句失败AttributeError:对象没有这个属性EOFError:没有内建输入,到达EOF标记EnvironmentError:操作系统错误的基类IOError:输入/输出操作失败OSError:操作系统错误WindowsError:系统调用失败ImportError:导入模块/对象失败KeyboardInterrupt:用户中断执行(通常是输入^C)LookupError:无效数据查询的基类IndexError:序列中没有没有此索引(index)KeyError:映射中没有这个键MemoryError:内存溢出错误(对于Python解释器不是致命的)NameError:未声明/初始化对象(没有属性)UnboundLocalError:访问未初始化的本地变量ReferenceError:弱引用(Weakreference)试图访问已经垃圾回收了的对象RuntimeError:一般的运行时错误NotImplementedError:尚未实现的方法SyntaxErrorPython:语法错误IndentationError:缩进错误TabErrorTab:和空格混用SystemError:一般的解释器系统错误TypeError:对类型无效的操作ValueError:传入无效的参数UnicodeErrorUnicode:相关的错误UnicodeDecodeErrorUnicode:解码时的错误UnicodeEncodeErrorUnicode:编码时错误UnicodeTranslateErrorUnicode:转换时错误Warning:警告的基类DeprecationWarning:关于被弃用的特征的警告FutureWarning:关于构造将来语义会有改变的警告OverflowWarning:旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning:关于特性将会被废弃的警告RuntimeWarning:可疑的运行时行为(runtimebehavior)的警告SyntaxWarning:可疑的语法的警告UserWarning:用户代码生成的警告

参考:https://www.cnblogs.com/Lival/p/6203111.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值