僅需6道題輕松掌握Python例外捕獲 | Python技能樹征題
- 0. 前言
- 1. 第 1 題:在單元測驗中測驗例外
- 2. 第 2 題:多個例外的處理
- 3. 第 3 題:捕獲所有例外
- 4. 第 4 題:創建自定義例外
- 5. 第 5 題:捕獲例外后拋出其他例外
- 6. 第 6 題:重新拋出被捕獲的例外
- 試題代碼地址
0. 前言
由于 Python 直接從源代碼運行程式,在 Python 測驗或運行代碼之前沒有編譯器進行代碼分析,因此測驗和例外處理是 Python 程式開發的中的重要組成部分,我們就通過 6 道 Python 編程題來掌握常見例外處理的方法吧!
1. 第 1 題:在單元測驗中測驗例外
知識點描述:使用測驗用例判斷例外是否被拋出,
問題描述:測驗某個函式拋出的 KeyError 例外的情況,請從以下選項中選出你認為正確的選項:
A.
import unittest
def parse_dict(dictionary, key):
return dictionary[key]
class TestConversion(unittest.TestCase):
def test_bad_key(self):
self.assertRaises(KeyError, parse_dict, 'NULL')
B.
import unittest
def parse_dict(dictionary, key):
return dictionary[key]
class TestConversion(unittest.TestCase):
def test_bad_key(self):
self.assertRaises(KeyError)
C.
import unittest
def parse_dict(key):
return key
class TestConversion(unittest.TestCase):
def test_bad_key(self):
self.assertRaises(KeyError)
D.
import unittest
def parse_dict(key):
return key
class TestConversion(unittest.TestCase):
def test_bad_key(self):
self.assertRaises(KeyError, parse_dict, 'NULL')
正確答案: A
2. 第 2 題:多個例外的處理
知識點描述:處理一個代碼片段可能拋出的多個不同例外,
問題描述:有一個可能拋出多個不同例外的代碼段,如何使用簡潔的代碼處理所有可能的例外:
A.
from urllib import error, request
urls = ['https://blog.csdn.net','https://www.baidu.com/aaa', 1, 'https://error.url']
for url in urls:
try:
request.urlopen(url)
except (error.URLError, AttributeError):
urls.remove(url)
print(urls)
B.
from urllib import error, request
urls = ['https://blog.csdn.net','https://www.baidu.com/aaa', 1, 'https://error.url']
for url in urls[::-1]:
try:
request.urlopen(url)
except AttributeError:
urls.remove(url)
print(urls)
C.
from urllib import error, request
urls = ['https://blog.csdn.net','https://www.baidu.com/aaa', 1, 'https://error.url']
for url in urls[::-1]:
try:
request.urlopen(url)
except error.URLError:
urls.remove(url)
print(urls)
D.
from urllib import error, request
urls = ['https://blog.csdn.net','https://www.baidu.com/aaa', 1, 'https://error.url']
for url in urls[::-1]:
try:
request.urlopen(url)
except (error.URLError, AttributeError):
urls.remove(url)
print(urls)
正確答案: D
3. 第 3 題:捕獲所有例外
知識點描述:捕獲代碼中存在的所有例外,
問題描述:如何捕獲代碼中存在的所有例外,請從以下選項中選出你認為正確的選項:
A.
list_1 = [...]
list_2 = [...]
def add_list(list_1, list_2):
for i in range(len(list_1)):
r = list_1[i] + list_2[i+1]
try:
add_list(list_1, list_2)
except Exception as error:
print(e)
B.
list_1 = [...]
list_2 = [...]
def add_list(list_1, list_2):
for i in range(len(list_1)):
r = list_1[i] + list_2[i+1]
try:
add_list(list_1, list_2)
except Exception as e:
print(e)
C.
list_1 = [...]
list_2 = [...]
def add_list(list_1, list_2):
for i in range(len(list_1)):
r = list_1[i] + list_2[i+1]
try:
add_list(list_1, list_2)
except Exception:
print(e)
D.
list_1 = [...]
list_2 = [...]
def add_list(list_1, list_2):
for i in range(len(list_1)):
r = list_1[i] + list_2[i+1]
try:
add_list(list_1, list_2)
except Exception:
print(Exception)
正確答案: B
4. 第 4 題:創建自定義例外
知識點描述:將例外包裝成自定義例外,
問題描述:在構建的網路相關程式中,定義自定義例外,請從以下選項中選出你認為正確的選項:
A.
class NetworkError(Exception):
def __init__(self, message, status):
super.__init__(self, message, status)
self.message = message
self.status = status
B.
class NetworkError(Exception):
def __init__(self, message, status):
self.message = message
self.status = status
C.
class NetworkError(Exception):
def __init__(self, message, status):
super().__init__(self, message, status)
self.message = message
self.status = status
D.
class NetworkError(Exception):
def __init__(self, message, status):
super().__init__(message, status)
self.message = message
self.status = status
正確答案: C
5. 第 5 題:捕獲例外后拋出其他例外
知識點描述:捕獲一個例外后拋出另一個例外,
問題描述:捕獲一個例外后拋出另一個例外,同時在例外回溯中保留兩個不同例外的資訊,請從以下選項中選出你認為正確的答案:
A.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except ValueError as e:
raise RuntimeError('A error occurred') from e
B.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except KeyError as e:
raise RuntimeError('A error occurred') from e
C.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except TypeError as e:
raise RuntimeError('A error occurred') from e
D.
from datetime import datetime
def hello_world(num):
return "Hello world {}!".format(num)
for i in range(10):
with open('log.txt', 'wt') as f:
print(str(datetime.today()) + '\t' + hello_world(i), file=f)
正確答案: B
6. 第 6 題:重新拋出被捕獲的例外
知識點描述:在 except 塊中捕獲例外后,重新將錯誤拋出,
問題描述:在一個 except 代碼塊中捕獲一個例外,但是之后想要將其重新拋出,請從以下選項中選出你認為正確的答案:
A.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except KeyError as e:
print(example)
raise
B.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except KeyError as e:
print(example)
raise RuntimeError
C.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except ValueError as e:
print(example)
raise RuntimeError
D.
example = {'python': 'simple', 'c': 'fast'}
try:
print(example['java'])
except ValueError as e:
print(example)
raise
正確答案: A
試題代碼地址
https://codechina.csdn.net/LOVEmy134611/python_problem
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/319874.html
標籤:其他
上一篇:??蘇州程式大白決議Linux 中的虛擬網路介面??《??記得收藏??》
下一篇:沖向“王者榮耀”
