Coding for KidsCoding for Kids
Cấp Độ Sáng TạoThử TháchHướng Dẫn Giáo Viên
Bình chọn tính năng
Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ

Xử lý ngoại lệ
Tùy chỉnh các lớp ngoại lệ

Mục tiêu

Xác minh nước mưa đã thu thập được và đảm bảo rằng nó được xử lý và chuyển giao chính xác bằng cách tùy chỉnh các lớp ngoại lệ.

Ở đầu cuối của khu phức hợp mái nhà có một bể chứa nước mưa thu thập được, nguồn nước này được lọc và chuyển khắp tòa nhà cho các mục đích khác nhau. Một số van trên tường phía trên điều khiển áp suất nước chảy, trong khi đó, kho chứa cuối cùng là nơi chứa các bộ phận gia nhiệt nước khác nhau. Vận hành máy móc có thể gặp khó khăn tuy nhiên, việc vận hành của chúng có thể được hợp lý hóa hiệu quả bằng cách liệt kê các mã lỗi và thiết lập các biện pháp khắc phục hiệu quả. Điều này được thực hiện bằng cách tùy chỉnh các lớp ngoại lệ mà bạn tạo ra cho các ngoại lệ tùy chỉnh của mình.

Có hai lớp ngoại lệ tùy chỉnh được thiết lập trong trình chỉnh sửa mã, khả năng sử dụng chúng của bạn sẽ rất cần thiết để khắc phục bất kỳ sự cố nào của máy móc bạn gặp phải. Lớp đầu tiên là một ngoại lệ để khắc phục sự cố áp suất nước. Nó được dùng với các van để đảm bảo nước chảy đúng cách vào khu phức hợp hoặc nếu áp suất cần được điều chỉnh. Tùy thuộc vào việc áp suất dưới 100 hoặc trên 300 một hành động khác nhau sẽ được thực hiện bởi ngoại lệ, áp suất là một đối số mà người dùng phải cung cấp. Khi được kích hoạt, một cửa sổ pop-up tùy chỉnh hiển thị mã lỗi và thông báo sẽ xuất hiện.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

Lớp ngoại lệ tùy chỉnh thứ hai được dùng để điều chỉnh nhiệt độ trong các bộ phận gia nhiệt nước, nếu nhiệt độ quá thấp hoặc quá cao bạn phải nhập nhiệt độ mới như một đối số để khắc phục lỗi một khi nó xảy ra.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

Để bắt đầu, hãy đi đến dấu X nhẹ trên thảm màu xanh lá và đối mặt với bể chứa có van, có bốn (4) van điều chỉnh áp suất nước được bơm từ bể chứa. Có bốn (4) hằng số biến: green_pressure, red_pressure, blue_pressureorange_pressure, những hằng số này giữ giá trị áp suất của mỗi bể chứa tương ứng với thảm có màu tương ứng.

Tại tất cả các dấu X nhẹ, sử dụng các khối mã try/exceptelse để xác minh xem áp suất trong mỗi bể có phù hợp không. Nếu áp suất dưới 100 hoặc nếu nó vượt quá 300 thì hãy ném ngoại lệ tùy chỉnh PressureError và thêm áp suất như một đối số. Nếu được kích hoạt, nó sẽ ném mã lỗi và thực hiện một sự điều chỉnh, nếu không thì khối else được kích hoạt xác nhận rằng áp suất trong bể là phù hợp. Ví dụ:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: player.speak(x) else: player.speak( "Pressure is appropriate" )

Thực hiện điều này tại tất cả các dấu X nhẹ, sử dụng các hằng số biến tương ứng với các thảm có màu khác nhau và kiểm tra hoặc điều chỉnh các van áp suất khi cần thiết.

Sau khi hoàn thành, hãy đi đến dấu X màu vàng và sử dụng hàm open() để truy cập vào kho chứa có bộ phận gia nhiệt nước, một khi bên trong, hãy đi đến dấu X màu vàng bên trong kho chứa và sử dụng hàm read() để đọc ghi chú trên quầy. Ghi chú này sẽ cung cấp cho bạn thông tin về nhiệt độ lý tưởng cho từng bộ phận gia nhiệt nước.

Sau khi có thông tin về từng nhiệt độ, hãy đi đến dấu X tối ở thảm màu tím, ở đây chúng ta sẽ sử dụng chuỗi mã try/exceptelse để xác minh rằng các bộ phận gia nhiệt nước có nhiệt độ phù hợp không. Có bốn (4) hằng số biến khác liên quan đến các thảm có màu: purple_temperature, yellow_temperature, pink_temperaturewhite_temperature.

Trong chuỗi này, chúng ta sẽ xác minh nếu nhiệt độ dưới 100, nếu có, chúng ta sẽ ném ngoại lệ TemperatureError. Là một ngoại lệ tùy chỉnh, nó nhận một đối số, trong trường hợp này bạn phải nhập nhiệt độ được ghi trong ghi chú để thực thi chính xác biện pháp khắc phục của ngoại lệ nhằm sửa lỗi. Ví dụ:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: player.speak(x) else: player.speak( "Temperature is ok" )

Thực hiện điều này với tất cả các bộ phận gia nhiệt nước, tại mỗi dấu X khi đối diện với các bộ phận gia nhiệt, hãy thực hiện chuỗi sử dụng các hằng số biến tương ứng với các thảm có màu chính xác để hoàn thành cấp độ.

Sách Mã