异常处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。

异常处理

异常处理

异常处理的特点: 一旦发生异常,程序就不再执行 处理异常的时候 报错的在最下边

技术分享

 

技术分享

 

异常种类

语法异常 (在程序运行之前就存在) 逻辑异常 自己代码问题
ValueError NameError TypeError KeyError

放在try中的代如果遇到except中的代码错误类型 就会执行except中的代码
一旦发生异常 try中得 代码会停止执行

 if 预防异常  ======= try 处理异常

try:
    num=input(输入数字:)
    int(num)
    # a
    sum(1,2)
except ValueError:
    print(输入非数字)
except NameError:
    print(没有定义的变量)
except TypeError as error:
   print(数据类型有误 %s%error) 明确知道发生的异常时 ---用实际的异常 如 except ValueError 自己定义内容
不清楚错误的时候---用 except ValueError as e -----print(e) 打印错误信息

except Exception as e:
    print(e)
对于已经可以预料的 但是不能完全规避的 要处理的异常 应该要指定 处理方式
对于不能预料的异常 可以用万能异常

万能异常 放在最后

出现第一个异常(异常下的程序不会执行)的时候 一直往找处理 直到找到处理方式


                               =======    try  else  没有异常的时候    =======
try:
   a
   except NameError as e:
     print(e)
else:
     print(没有错的时候 执行!!)   # 当try语句没有异常的时候执行----与  for else  while else

 

基本格式

# try:
#     f=open(‘file‘)
#     int(f.read())
# except ValueError:
#     print(‘读文件失败‘)
# except Exception as e:
#     print(e)
# else:                 # try 里面的代码没触发异常的时候
#     print(‘成功‘)
# finally:
#     f.close()

 

                    =======   try  finally   ====== 清理 ----  把之前的文件 连接都关掉
 def func():     try:         a     except NameError as e:   # 有异常的时候才执行        print(e)         a=2         return a     finally:           # 任何情况下都会执行        print(‘执行‘)    # 当函数中有异常  意外退出的时候   始终会执行 finally   (即使里面有 return) print(func())

 

                      ======= raise 抛出异常   面向对象==========


                      ==========断言=====assert===============

                     assert 1==0      # AssertionError     # 直接退出程序   # 后便不再执行

 

例子 try except 应用

=========装饰器 ===============
# def wrapper(func): # def inner(*args,**kwargs): # try: # pass # return func(*args,**kwargs) # finally: # pass # return inner

 






















以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章

使用片段中的处理程序时出现非法状态异常

Java异常处理机制

java 反射代码片段

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

片段中的Android致命异常