หน้าแรก
หน้าแรก
OSError ทำหน้าที่เป็นคลาสข้อผิดพลาดสำหรับโมดูล os และจะเพิ่มขึ้นเมื่อมีข้อผิดพลาดกลับมาจากฟังก์ชันเฉพาะของระบบปฏิบัติการ เราสามารถเขียนโค้ดที่กำหนดใหม่ได้ดังนี้ เพื่อจัดการกับข้อยกเว้นและทราบประเภทของโค้ด #foobar.py import os import sys try: for i in range(5): print i, os.ttyname(i) except Exceptio
รหัสที่กำหนดจะถูกเขียนใหม่เพื่อตรวจจับข้อยกเว้น import sys import threading import time import Queue def thread(args1, stop_event, queue_obj): print "start thread" stop_event.wait(12) if not stop_event.is_set(): try: raise Exception("boom!") except Exception: queue_obj.put(sys.ex
ใน Python 3.x โค้ดอยู่ภายใต้การผูกมัดข้อยกเว้น และเราได้ผลลัพธ์ดังนี้ C:/Users/TutorialsPoint1/~.pyTraceback (การโทรล่าสุดล่าสุด):ไฟล์ C:/Users/TutorialsPoint1/~.py บรรทัดที่ 2 ใน 1/0ZeroDivisionError:หารด้วยศูนย์ ข้อยกเว้นข้างต้นเป็นสาเหตุโดยตรงของข้อยกเว้นต่อไปนี้: Traceback (การโทรล่าสุดครั้งล่า
เราเขียนโค้ดที่กำหนดใหม่ดังนี้ #foo.py import argparse class InvalidArgError(Exception):pass parser = argparse.ArgumentParser() parser.add_argument("echo") args = parser.parse_args() try: print (args.echo) raise InvalidArgError except InvalidArgError as e: print e เมื่อสคริปต์นี้รันที่เทอ
เป็นกฎทั่วไปที่แม้ว่าคุณจะจับข้อยกเว้นทั้งหมดได้โดยใช้โค้ดด้านล่าง แต่คุณไม่ควรทำสิ่งนี้: try: #do_something() except: print "Exception Caught!" อย่างไรก็ตาม สิ่งนี้จะจับข้อยกเว้นเช่น KeyboardInterrupt ที่เราอาจไม่สนใจ เว้นแต่คุณจะแจ้งข้อยกเว้นอีกครั้งในทันที เ
เรียกใช้เพียงประโยคเดียวยกเว้นส่วนคำสั่งในบล็อกการลอง หากคุณต้องการให้ข้อยกเว้นสูงขึ้น คุณจะต้องใช้บล็อกการลองที่ซ้อนกัน ให้เราเขียน 2 ลอง...ยกเว้นบล็อกแบบนี้: try: try: 1/0 except ArithmeticError as e: if str(e) == "Zero division": print ("thumbs up") else: raise except Excepti
ปัญหาคือ thread_obj.start() ส่งคืนทันที เธรดย่อยที่คุณเริ่มดำเนินการในบริบทของตนเอง ในสแต็กของตัวเอง ข้อยกเว้นใด ๆ ที่เกิดขึ้นมีอยู่ในบริบทของเธรดย่อย คุณต้องสื่อสารข้อมูลนี้ไปยังเธรดหลักโดยส่งข้อความบางส่วน สามารถเขียนโค้ดใหม่ได้ดังนี้: import sys import threading import Queue class ExcThread(thre
สามารถเขียนโค้ดใหม่เพื่อตรวจจับข้อยกเว้นได้ดังนี้: try: with open("myFile.txt") as f: print(f.readlines()) except: print('No such file or directory') เราได้ผลลัพธ์ดังต่อไปนี้ C:/Users/TutorialsPoint1/~.py No such
เราสามารถใช้ประโยคสุดท้ายเพื่อล้างว่ามีการโยนข้อยกเว้นหรือไม่: try: #some code here except: handle_exception() finally: do_cleanup() หากต้องล้างข้อมูลในกรณีที่มีข้อยกเว้น เราสามารถเขียนโค้ดดังนี้: should_cleanup = True try: #some code here should_cleanup = False e
เราสามารถเขียนคลาสข้อยกเว้นแบบกำหนดเองด้วยรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดดังนี้: class ErrorCode(Exception): def __init__(self, code): self.code = code try: raise ErrorCode(401) except ErrorCode as e: print &q
ข้อยกเว้นของไพ ธ อนทั้งหมดไม่ใช่ข้อผิดพลาดรันไทม์ บางส่วนก็เป็นข้อผิดพลาดทางไวยากรณ์เช่นกัน หากคุณเรียกใช้โค้ดที่กำหนด คุณจะได้ผลลัพธ์ดังต่อไปนี้ File "C:/Users/TutorialsPoint1/~.py", line 4 else: ^ SyntaxError: invalid syntax เราเห็นว่ามันเป็นข้อผิดพลาดทางไวยากรณ์และไม่ใช่ข้อผิดพลาดรันไท
รหัสสามารถเขียนได้ดังต่อไปนี้เพื่อจับข้อยกเว้น a, b=5, 0 try: if b != 0: print a/b else: a/b raise ZeroDivisionError except Exception as e: print e เราได้ผลลัพธ์ดังต
Python มีเมธอด endwith(string) ในคลาส String เมธอดนี้ยอมรับสตริงต่อท้ายที่คุณต้องการค้นหาและถูกเรียกบนอ็อบเจ็กต์สตริง คุณสามารถเรียกวิธีนี้ด้วยวิธีต่อไปนี้: string = 'C:/Users/TutorialsPoint1/~.py' print(string.endswith('.py')) ผลลัพธ์ True มีอีกวิธีหนึ่งในการค้นหาว่าสตริงลงท้ายด้ว
Python มีเมธอด endwith(tuple) ในคลาส String เมธอดนี้ยอมรับสตริงทูเพิลที่คุณต้องการค้นหาและถูกเรียกบนอ็อบเจกต์สตริง คุณสามารถเรียกวิธีนี้ด้วยวิธีต่อไปนี้: string = 'core java' print(string.endswith(('txt', 'xml', 'java', 'orld'))) ผลลัพธ์ True มีอีกวิธีหนึ่งใ
สำหรับโค้ดที่ระบุด้านบน วิธีแก้ไขมีดังนี้ ตัวอย่าง class CustomValueError(ValueError): def __init__(self, arg): self.arg = arg try: a = int(input("Enter a number:")) if not 1 < a < 10: raise CustomValueError("Value must be within 1 and 10.") except CustomValueError as e: pr
สำหรับรหัสที่กำหนดเราจะส่งออกต่อไปนี้ b = ['10', '20'] a = ['10', '20'] คำอธิบาย: สิ่งนี้บ่งชี้ว่าตัวแปร a ถูกส่งผ่านโดยการอ้างอิงเนื่องจากฟังก์ชันเปลี่ยนค่าในสคริปต์หลัก
คลาส Python String มีเมธอดที่เรียกว่า isalnum() ซึ่งสามารถเรียกบนสตริงและบอกเราว่าสตริงประกอบด้วยตัวอักษรและตัวเลขเท่านั้นหรือไม่ คุณสามารถเรียกใช้ด้วยวิธีต่อไปนี้: print( '123abc'.isalnum()) ผลลัพธ์ True print('123#$%abc'.isalnum()) ผลลัพธ์ False คุณยังสามารถใช้ regexes เพื่อผลลั
วิธีที่ง่ายที่สุดในการตรวจสอบสิ่งนี้ใน python คือการใช้นิพจน์ทั่วไป เพื่อตรวจสอบว่าสตริงที่ระบุมีตัวอักษรและตัวเลขอย่างน้อยหนึ่งตัวหรือไม่ เราใช้ re.match(regex, string) ตัวอย่าง import re print(bool(re.match('^(?=.*[0-9]$)(?=.*[a-zA-Z])', 'hasAlphanum123'))) print(bool(re.match(
คุณสามารถใช้นิพจน์ทั่วไปเพื่อทำงานนี้ให้สำเร็จ เพื่อตรวจสอบว่าสตริงมีเฉพาะตัวอักษร ตัวเลข ขีดล่าง และขีดกลาง เราสามารถใช้นิพจน์ทั่วไปต่อไปนี้:^[A-Za-z0-9_-]*$ ตัวอย่าง นำเข้าพิมพ์ซ้ำ(bool(re.match(^[A-Za-z0-9_-]*$, aValidString123--__)))print(bool(re.match(^[A- Za-z0-9_-]*$, inv@lid)))) ผลลัพธ์ Tru
คลาส Python String มีเมธอดที่เรียกว่า isalnum() ซึ่งสามารถเรียกบนสตริงและบอกเราว่าสตริงประกอบด้วยตัวอักษรและตัวเลขเท่านั้นหรือไม่ คุณสามารถเรียกใช้ด้วยวิธีต่อไปนี้: >>> '123abc'.isalnum() True >>> '123#$%abc'.isalnum() False คุณยังสามารถใช้ regexes เพื่อผลลัพธ์เดีย