目录
- Exceptions
- `1. try-except`
- `2. 自定义异常`
Exceptions
1. try-except
# 读取一个不存在的文件
file_name = 'not_existing.txt'
try:
with open(file_name, 'r') as my_file:
print('File is successfully open')
except FileNotFoundError as e:
print('Uups, file: {} not found'.format(file_name))
print('Exception: {} was raised'.format(e))
# Uups, file: not_existing.txt not found
# Exception: [Errno 2] No such file or directory: 'not_existing.txt' was raised
def calculate_division(var1, var2):
result = 0
try:
result = var1 / var2
except ZeroDivisionError as ex1:
print("Can't divide by zero")
except Exception as ex2:
print('Exception: {}'.format(ex2))
return result
result1 = calculate_division(3, 3)
print('result1: {}'.format(result1)) # result1: 1.0
result2 = calculate_division(3, '3')
# Exception: unsupported operand type(s) for /: 'int' and 'str'
print('result2: {}'.format(result2)) # result2: 0
result3 = calculate_division(3, 0)
# Can't divide by zero
print('result3: {}'.format(result3)) # result3: 0
def calculate_division(var1, var2):
return var1 / var2
try:
result = calculate_division(3, '3')
except Exception as e:
print(e)
# unsupported operand type(s) for /: 'int' and 'str'
2. 自定义异常
import math
# 定义自己的异常
class NegativeNumbersNotSupported(Exception):
pass
# 实例
def secret_calculation(number1, number2):
if number1 < 0 or number2 < 0:
msg = 'Negative number in at least one of the parameters: {}, {}'.format(
number1, number2)
raise NegativeNumbersNotSupported(msg)
return math.sqrt(number1) + math.sqrt(number2)
# 触发自定义异常
result = secret_calculation(-1, 1)
# NegativeNumbersNotSupported: Negative number in at least one of the parameters: -1, 1