python捕获函数异常 python捕获错误( 二 )


异常捕获中finally的使用 。一般用于不管程序是否错误,程序最后都应该执行的步骤,例如在文件操作中,关闭文件是最后必须执行的操作,比如:
结果:
python如何捕获错误信息首先我们声明一个字符串,然后构建下表获取字符串中的字符,
然后我们经常会用一个越界的下表进行访问,就会报如下的错误:
相关推荐:《Python教程》
如果我们想捕获这个错误,并且加入我们自己的提示信息的话 , 可以用try与catch进行,
另外except中也可以精确的指定某一个异常类型 , 如下图所示,指定了除数为0的异常 。
如果想输出异常提示信息的话 , 直接在except里进行输出即可 , 
最后提醒一下的是,try与except语句中也可以运用else语句的,
综上所述,python中进行异常的捕获运用try与except语句即可,异常信息的显示也可以自己进行定制 。
怎样在python中捕获线程抛出的异常python的线程中的异常python捕获函数异常,通常不会给你显示出错的语句 。你可以将thread函数python捕获函数异常,或者是Thread的run里的内容用整个儿的try catch包裹起来 。搜索
然后这样
import traceback,sys
try:
threadfun1()
except:
traceback.print_exc(file=sys.stdout)
这样出错的时候就能定位到是哪一行代码了 。
因为线程经常出现这种无显示错误位置的情形 。后来都形成了习惯,要不把线程放在try catch里 。要不就仔细检查线程函数 , 确保它没有错误,再放出去运行 。
另外你还可以将线程函数的功能放在主进程里,单线程运行 。这样错误位置就曝露出来了 。
仅仅从你这个提示来看是无法定位错误的位置与类型的 。
如何解决的Python类型错误1.Python异常类
Python是面向对象语言,所以程序抛出的异常也是类 。常见的Python异常有以下几个,大家只要大致扫一眼 , 有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了) 。
异常描述
NameError尝试访问一个没有申明的变量
ZeroDivisionError除数为0
SyntaxError语法错误
IndexError索引超出序列范围
KeyError请求一个不存在的字典关键字
IOError输入输出错误(比如你要读的文件不存在)
AttributeError尝试访问未知的对象属性
ValueError传给函数的参数类型不正确 , 比如给int()函数传入字符串形
2.捕获异常
Python完整的捕获异常的语句有点像:
复制代码 代码如下:
try:
try_suite
except Exception1,Exception2,...,Argument:
exception_suite
......#other exception block
else:
no_exceptions_detected_suite
finally:
always_execute_suite
额...是不是很复杂?当然 , 当我们要捕获异常的时候,并不是必须要按照上面那种格式完全写下来 , 我们可以丢掉else语句,或者finally语句;甚至不要exception语句,而保留finally语句 。额 , 晕了?好吧,下面 , 我们就来一一说明啦 。
2.1.try...except...语句
try_suite不消我说大家也知道,是我们需要进行捕获异常的代码 。而except语句是关键,我们try捕获了代码段try_suite里的异常后,将交给except来处理 。
try...except语句最简单的形式如下:
复制代码 代码如下:
try:
try_suite
except:
exception block
上面except子句不跟任何异常和异常参数,所以无论try捕获了任何异常 , 都将交给except子句的exception block来处理 。如果我们要处理特定的异常 , 比如说,我们只想处理除零异常,如果其他异常出现,就让其抛出不做处理,该怎么办呢?这个时候 , 我们就要给except子句传入异常参数啦!那个ExceptionN就是我们要给except子句的异常类(请参考异常类那个表格),表示如果捕获到这类异常,就交给这个except子句来处理 。比如:

推荐阅读