错误是error
逻辑错误:算法写错了,加法写成了减法,
笔误:变量名写错了,语法错误
函数或类使用错误,其实这也属于逻辑错误
总之,错误是可以尽可能的避免的
异常是exception
没有做错事情,出现意外,导致计划泡汤,意外往往无法避免,由你不可掌控的原因控制的,有些系统太过复杂是无法预测的,异常是无法感知的,所以是无法直接去避免的,但是错误是可以避免的
在高级语言中,一般都有异常和错误两个概念,异常是可以捕获的,并被处理的,但是错误是不能够被捕获的
有些错误是可以引发异常,可以捕获异常,但是是由错误引起的,错误本身是不可捕获的
文件不存在会抛出异常,这种异常是可以被捕获的
现在抛出的异常是文件不存在异常
如果发生错误,语法错误,也是Error结尾的
python比较奇怪,把语法错误放到异常类的体系里面
一种是代码因为某些原因发生异常,还有一种是通过raise方法,手动抛出一个,这样就可以手动产生一个异常出去
如果不对产生的异常做处理,就会影响现在的程序执行
不出现错误捕捉和处理的话,就影响程序的执行,从出现异常向后的代码,不做捕获处理就没法执行,直接中断当前函数执行,中断当前线程执行
异常是在运行中确实达到某种条件,这个条件就产生异常,会提前结束线程的执行
raise语句可以什么都不写
raise后面写类名,就是调用这个类的无参构造
提示应该有最近一次被激活的异常,这里没有就直接报错
可以直接在后面放类,放类,就会调用这个类的无参构造
无参构造,其实里面有默认值
这个是传了参来构造
这两条是相等的,上面写成这样就会调用下面的无参构造
没有这个文件就直接报错
出现错误就终止语句完成,在try里才会尝试去捕捉异常,当前产生异常的地方,就不再往下执行,except来处理这个异常怎么做
只要有地方把异常处理完后,就可以继续向下执行,try里面出现的异常,after就不执行了
try里面先执行
如果没有捕获,就只能打印个before,没有替你捕获
函数内部的异常如果没有补货,就会继续向外抛出,这样打印的效果是跟刚才一样的,这就是从函数内部传送到函数外部
except是在处理异常,处理过了,就继续向下执行
还可以捕获特定的异常,不但没打印,而且直接报错,捕获是否是Indexerror这种错误的异常,这里就相当于file not find 异常捕获了但是没人处理,没人管就抛出去了
这回就抛出异常
except后面什么都没写,就是什么异常都捕获
这是捕获特定异常,算术异常
code1,红色代表是标准输出
raise看起来像是什么异常都能抛出,但是肯定不是这么玩的