Python进阶——异常处理及程序调试

-为了让程序全部执行

-结果观察中——要么try处理,要么raise抛出

1、异常
  • Python常见的异常

    NameError	#尝试访问一个没有声明的变量引发的错误
    
2、异常处理语句
  • 把可能异常的代码放在try语句块中,把处理结果放在except语句块中

    #try...except
    try:
    	可能出现错误的代码块
    except [指定要捕获的异常 as 别名]:	#如果不指定,表示捕获全部异常,可指定多个异常,用逗号隔开即可
    	进行异常处理的代码块
        
    eg:
    def Sun():
       # print("风起了-周四")		
        print(100/0)		#因为这个异常,会去执行except语句的内容
    
    
    if __name__ =='__main__':
        try:
            Sun()
        except #(yichang1,yihcnag2) as e:
            print("除数不能为0")
            
    除数不能为0
    
    #try...except....else
    
    else:try语句没有发现异常时执行
        
        
    eg:
    def Sun():
    	print("风起了-周四")
       #print(100/0)
    
    if __name__ =='__main__':
        try:
            Sun()
        except:
            print("有异常")
    
        else:
            print("没有异常呢")
    
    风起了-周四
    没有异常呢
    
    #try...except...finally
    finally:无论程序有无异常,finally中的代码块都会被执行,类似于try语句快之外的语句,不管怎样都会被执行
        
    eg:
    def Sun():
        print("风起了-周四")
        print(100/0)
    
    
    if __name__ =='__main__':
        try:
            Sun()
        except:
            print("有异常")
    
        finally:
            print("不论异常,我都会被执行")
            
        print("我是异常之外的语句")
        
    风起了-周四
    有异常
    不论异常,我都会被执行
    我是异常之外的语句
    
    
    #raise语句
    前面的几个语句都是处理异常,raise是不进行处理,抛出异常
    
    eg:
    def Sun():
        i=0
        if i==0:    
             raise ValueError("抛出异常")
                
    if __name__ =='__main__':
        Sun()
            
        
    File "C:/Users/jiarongjuan/Desktop/wk3.py", line 5, in Sun
        raise ValueError("抛出异常")
    ValueError: 抛出异常