網站首頁 編程語言 正文
異常處理介紹
在實際的開發中,我們經常遇到一些報錯的例子,在pycharm的顯示頁面下,當我們看到一串串的紅色的英文字母的時候,就是出現異常,這個時候如果英文好一點的童鞋,就可以按照它的提示,自己去解決。但是英文是很多的童鞋的軟肋,不過你也不要擔心,這個時候你就需要有一個翻譯神器,我使用的是網易有道詞典,不過有時候我們還是會遇到一些比較生僻的表達,所以本期文章我們就一起來看看關于Python實際開發過程中的一些常見報錯和解決方法。
語法報錯
代碼拼寫錯誤,一般在pycharm里面出現了錯誤的拼寫,就會自動顯示出來,在它的下面有紅色的波浪線,還有就是我們在使用代碼的拼寫的時候,有一個技巧,它會自動補全,我們根據自己需要的代碼塊,按下“enter”鍵就可以實現快速拼接,這樣極大地提高了我們寫代碼的速度和效率。
還有就會一些縮進錯誤,沒有打冒號,這個是初學者經常遇到的一些問題,在之前的pycharm版本里面沒有提示錯誤的這個功能,后面升級后就會有。在這里我還要提醒一個,經常有人會問,我好像沒有寫錯啊,但是就是不能運行,這個時候就要檢查自己輸入法是不是英文輸入法,除了用引號括起來的里面可以中文,其他的都不可以!
異常處理
出現異常的時候我們不知道自己的哪一部分寫錯了,難道還要從全文查找嗎,不必了!我們直接點擊在報錯上面的那個鏈接,就會自動調到可能錯誤的代碼處。
下面我看看一些常見的異常解釋:
解決方法
我們在自己寫代碼做項目的時候,我們發現我們一個完整的項目有很多的代碼塊,一旦我們第一行代碼報錯了,我們后面的就不能運行了,如果這樣的話,實際商業應用的時候,是非常的不現實的,所以我們就有了異常處理的方法。
try except
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
如果try語句下面出現了異常,程序就會去運行except下面的代碼去執行相關的操作,或者是捕獲異常
try:
a=str("王小王")+1233
print(a)
except:
print("出現異常語法錯誤!")
這里本來就會報錯,但是我們這個語句,我們要知道int和str是不可以進行運算的。那么我們在捕獲異常的時候,我們就會發現他是TypeError,對類型無效的操作!
try except else;
當我們這個程序沒有錯誤的時候,它會自動執行else語句,而且不會運行except下面的補充代碼,這樣就有了一個較好的解決方法。
try except finally:
當我們想要無論是否有異常出現我們都要去打印出來,這個時候我們就可以運行這個語句了。這個語句可以在finally下面加上一些必要的操作,比如我們在進行文件操作處理的時候,必須要關閉文件,這個時候就可以使用它。
try:
a=str("王小王")+1233
print(a)
except TypeError:
print("出現異常語法錯誤!")
finally:
print("123")
拋出異常
使用raise拋出異常。
try:
a=str("王小王")+1233
print(a)
except TypeError:
print("出現異常語法錯誤!")
finally:
raise TypeError
'''拋出異常'''
'''raise
raise[異常類型 [,arg [,traceback]]]
其中后面兩個參數都是可選參數
'''
'''assert'''
'''
這個其實就是raise的簡化,當assert后面的語句為假的時候,這個時候就會異常處理,為真就會有正確的運行
'''
def test():
for i in range(3):
try:
assert i<2
except AssertionError:
print("拋出一個異常!")
print(i)
print("執行完畢!")
test()
自定義異常
'''自定義異常
在定義異常類的時候,我們需要繼承Exception這個類,然后自己再去定義一些東西
'''
class RangeError(Exception):
def __init__(self,value):
self.value=value
def __str__(self):#重載方法__str__()
return self.value
raise RangeError("Rang錯誤?。。。。?)
其他內置函數
- testmod()
- testfile()
總結
原文鏈接:https://blog.51cto.com/u_15172991/5428416
相關推薦
- 2022-01-08 關于git操作warning: adding embedded git repository: pp
- 2023-02-05 詳解Pytorch中Dataset的使用_python
- 2023-01-13 python中的txt文件轉換為XML_python
- 2022-07-13 IO流分類以及分別使用字節流、字符流復制文本文件、復制圖片
- 2023-01-05 Go單例模式與Once源碼實現_Golang
- 2022-11-26 Redis下載部署并加入idea應用的小結_Redis
- 2022-02-18 git忽略文件,.gitignore配置
- 2022-02-11 Android之Compose頁面切換動畫介紹_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支