Hi 大家好,
今天要開始介紹Python中的錯誤和例外狀況篇,那我們開始吧!
Q: 什麼是文法錯誤?
A: 就是字面上意思,你寫的程式碼不符合Python的語法規則
。這些錯誤通常是在程式執行之前由 Python 的解譯器(Interpreter)檢測到的,文法錯誤會導致程式無法往下執行。
舉個例子:
for number in range(0, 5)
print(number)
PS D:\Project\practice> python hi.py
File "D:\Project\practice\hi.py", line 2
for number in range(0, 5)
^
SyntaxError: expected ':'
PS D:\Project\practice>
Q: 什麼是例外狀況?
A: 指的是程式執行過程中發生錯誤。這些錯誤不會在程式編譯時被檢測到,而是在程式執行時發生
。
舉個例子:
ZeroDivisionError
,TypeError
和NameError
。>>> 10 * (1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>>
>>> '2' + 999
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>>
>>> 4 + sdfsfd*3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sdfsfd' is not defined
>>>
Q: 如何攔截例外狀況?
A: 在程式中可以使用 try
和 except
來捕捉和處理例外狀況,可以防止程式因未處理的例外而當掉,停止運作。這樣的處理可以讓程式在發生例外時仍然能夠繼續運行。
舉個例子:
try:
result = 10 * (1/0)
except ZeroDivisionError:
print("不能除以零!")
PS D:\Project\practice> python hi.py
不能除以零!
PS D:\Project\practice>
Q: 什麼是引發例外?
A: 指的是你在寫程式的過程中,可以預想而知某個地方可能會發生錯誤,因此建立拋出一個例外。這通常用於在特定情況下主動中斷程式的正常流程,發出一個錯誤訊息。
def divide(a, b):
if b == 0:
raise ValueError("除數不能為零")
return a / b
try:
result = divide(10, 0)
except ValueError as e:
print(f"錯誤: {e}")
PS D:\Project\practice> python hi.py
錯誤: 除數不能為零
PS D:\Project\practice>
那今天就介紹到這裡,我們明天見~