Python---異常的綜合案例

☆ 異常的傳遞

需求:

① 嘗試只讀方式打開python.txt文件,如果文件存在則讀取文件內容,文件不存在則提示用戶即可。

② 讀取內容要求:嘗試循環讀取內容,讀取過程中如果檢測到用戶意外終止程序,則except捕獲


import time

try:
? ?f = open('python.txt', 'r')
? ?try:
? ? ? ?while True:
? ? ? ? ? ?content = f.readline()
? ? ? ? ? ?if len(content) == 0:
? ? ? ? ? ? ? ?break
? ? ? ? ? ?time.sleep(3)
? ? ? ? ? ?print(content, end='')
? ?except:
? ? ? ?# Ctrl + C(終端里面,其代表終止程序的繼續執行)
? ? ? ?print('python.txt未全部讀取完成,中斷了...')
? ?finally:
? ? ? ?f.close()
except:
? ?print('python.txt文件未找到...')


☆ raise拋出自定義異常

在Python中,拋出自定義異常的語法為raise 異常類對象

需求:密碼長度不足,則報異常(用戶輸入密碼,如果輸入的長度不足6位,則報錯,即拋出自定義異常,并捕獲該異常)。

原生方法:


def input_password():
? ? password = input('請輸入您的密碼,不少于6位:')
? ? if len(password) < 6:
? ? ? ? # 拋出異常
? ? ? ? raise Exception('您的密碼長度少于6位')
? ? ? ? return
? ? # 如果密碼長度正常,則直接顯示密碼
? ? print(password)
? ? ? ??
input_password()


面向對象拋出自定義異常:


class ShortInputError(Exception):
? ? # length代表輸入密碼長度,min_length代表ShortInputError最小長度
? ? def __init__(self, length, min_length):
? ? ? ? self.length = length
? ? ? ? self.min_length = min_length

? ? # 定義一個__str__方法,用于輸出字符串信息
? ? def __str__(self):
? ? ? ? return f'您輸入的密碼長度為{self.length},不能少于{self.min_length}個字符'

try:
? ? password = input('請輸入您的密碼,不少于6位:')
? ? if len(password) < 6:
? ? ? ? raise ShortInputError(len(password), 6)
except Exception as e:
? ? print(e)
else:
? ? print(f'密碼輸入完成,您的密碼是:{password}')


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210631.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

個人博客網站如何實現https重定向(301)到http

對于個人網站站注冊比較少的&#xff0c;服務器配置不是很好的&#xff0c;沒必要https,https跳轉到http是要時間的&#xff0c;會影響網站打開的速度。免費的https每年都要更換。個人博客網站https有一段時間了&#xff0c;而且很多頁面都有收錄排名&#xff0c;現在已去掉htt…

基于JavaWeb+SSM+Vue實習記錄微信小程序系統的設計和實現

基于JavaWebSSMVue實習記錄微信小程序系統的設計和實現 源碼獲取入口Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 Lun文目錄 目 錄 摘 要 III Abstract 1 1 系統概述 1 1.1 概述 2 1.2課題意義 3 1.3 主要內…

【Linux系統編程】進度條的編寫

目錄 一&#xff0c;進度條的必備知識 1&#xff0c;緩沖區的粗略介紹 2&#xff0c;回車與換行 二&#xff0c;進度條的初步制作 1&#xff0c;進度條的初步礦建 2&#xff0c;進度條的版本一 3&#xff0c;進度條的版本二 一&#xff0c;進度條的必備知識 1&#xff…

詳細了解STM32----GPIO

提示&#xff1a;永遠支持免費開源知識文檔&#xff0c;喜歡的點個關注吧&#xff01;謝謝&#xff01; 文章目錄 一、什么是GPIO&#xff1f;二、GPIO基本結構三、GPIO的輸入輸出模式1、推挽輸出2、開漏輸出3、復用推挽4、復用開漏1、浮空輸入2、上拉輸入&#xff13;、下拉輸…

FastAPI之嵌套模型

請求體 - 嵌套模型 使用 FastAPI&#xff0c;你可以很隨意的實現模型的嵌套、定義、校驗、記錄文檔&#xff0c;并使用任意深度嵌套的模型&#xff0c;這其實都是FastAPI的核心模塊P一單提成進行做的。。 List 字段 from fastapi import FastAPI from pydantic import BaseM…

基于JavaWeb+SSM+Vue童裝商城小程序系統的設計和實現

基于JavaWebSSMVue童裝商城小程序系統的設計和實現 源碼獲取入口Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 Lun文目錄 目 錄 摘 要 III Abstract 1 1 系統概述 2 1.1 概述 3 1.2課題意義 4 1.3 主要內容 5…

BearPi Std 板從入門到放棄 - 先天篇(1)(階段 : 智慧城市 - 智慧路燈)

簡介 對前面幾篇整合, 做個小小匯總試驗, 使用BearPi E53_SC1擴展板主芯片: STM32L431RCT6串口: Usart1擴展板與主板連接: I2C : I2C1 (光照強度傳感器&#xff1a;BH1750)LED: PB9步驟 創建項目 參考 BearPi Std 板從入門到放棄 - 引氣入體篇&#xff08;1&#xff09;(由零創…

【測試人生】數據同步和遷移的變更注意事項

數據同步或者遷移操作也算是線上數據變更的一種類型。由于涉及的數據量非常大&#xff0c;一旦發生故障&#xff0c;會直接影響線上業務&#xff0c;并且較難止損。從變更風險管控的角度考慮&#xff0c;數據同步或遷移操作也需要走合理的發布窗口&#xff0c;并且在操作前也需…

淺談Google Play ASO 優化

什么是ASO ASO即APP Store Optimization&#xff0c;是用于提高APP在應用市場排名的工具&#xff0c;其實也就是移動產品的SEO工作。 ASO是為了提高該產品的搜索結果成績&#xff0c;提升APP的下載量&#xff0c;針對Google Play來說&#xff0c;ASO就是優化APP頁面。 為什么…

Linux升級nginx版本

處于漏洞修復目的服務器所用nginx是1.16.0版本掃出來存在安全隱患&#xff0c;需要我們升級到1.17.7以上。 一般nginx默認在 /usr/local/ 目錄&#xff0c;這里我的nginx是自定義的路徑安裝在 /app/weblogic/nginx 。 1.查看生產環境nginx版本 cd /app/weblogic/nginx/sbin/…

Redis基礎入門

第1章&#xff1a;引言 大家好&#xff01;我是小黑&#xff0c;今天咱們來聊聊Redis。Redis&#xff0c;這個名字你可能在不少地方聽過&#xff0c;尤其是在后端開發領域&#xff0c;它可是個大名鼎鼎的角色。&#xff0c;Redis是一個開源的內存中數據結構存儲系統&#xff0…

放棄原生SQL:Python中更優雅的數據庫操作

概要 在Python中&#xff0c;通過原生SQL語句進行數據庫操作是一種傳統的方式&#xff0c;但現代的Python開發中&#xff0c;使用ORM&#xff08;Object-Relational Mapping&#xff09;工具和數據庫連接庫可以更加高效和優雅地進行增刪改查操作。本文將詳細介紹Python中放棄原…

解決IDEA中多個項目不在同一窗口下顯示的問題和添加新的git的URL

以上是添加顯示多個項目 以下是給新添加的項目添加git

LeetCode算法題解(單調棧)|LeetCode84. 柱狀圖中最大的矩形

一、LeetCode84. 柱狀圖中最大的矩形 題目鏈接&#xff1a;84. 柱狀圖中最大的矩形 題目描述&#xff1a; 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大…

做外貿很多時候還是要學會隨機應變

馬上又要到年底了&#xff0c;相信已經有一部分小伙伴開啟了催單模式&#xff0c;希望客戶盡量在春節前將訂單落實下來&#xff0c;自然也有很多客戶會在春節前的這一段時間開始陸續拜訪自己觀望了很久的工廠。 其實對于貿易公司來說&#xff0c;對于來看工廠的客戶&#xff0…

ChatGPT,作為一種強大的自然語言處理模型,具備顯著優勢,能夠幫助您在各個領域取得突破

2023年隨著OpenAI開發者大會的召開&#xff0c;最重磅更新當屬GPTs&#xff0c;多模態API&#xff0c;未來自定義專屬的GPT。微軟創始人比爾蓋茨稱ChatGPT的出現有著重大歷史意義&#xff0c;不亞于互聯網和個人電腦的問世。360創始人周鴻祎認為未來各行各業如果不能搭上這班車…

Kotlin 作用域函數:理解 apply, let, 和 with

Kotlin提供了幾個作用域函數來優化和簡化代碼的結構。 本文將對比分析 apply, let, 和 with 三個函數。 一、對比分析&#xff1a; apply&#xff1a;在其接收者的上下文中執行代碼塊&#xff0c;并返回接收者對象。let&#xff1a;在其接收者的上下文中執行代碼塊&#xff…

Kotlin:內置函數let、also、with、run、apply

前言 在Kotlin中&#xff0c;有一些用于擴展 & 方便開發者編碼的內置函數&#xff0c;能大大提高開發者的開發效率。今天&#xff0c;我將主要講解的是&#xff1a; let函數also函數with函數run函數apply函數 基礎知識&#xff1a;接口回調中Lambda使用 在Kotlin中可使用…

棧和隊列的互相實現

用隊列實現棧 OJ鏈接 請你僅使用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通棧的全部四種操作&#xff08;push、top、pop 和 empty&#xff09;。 實現 MyStack 類&#xff1a; void push(int x) 將元素 x 壓入棧頂。int pop() 移除并返…

Mybatis XML增刪操作(結合上文)

先來"增"操作 在UserInfoXMLMapper.xml里面寫 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <…