当前位置: 首页 > 编程日记 > 正文

Python培训教程分享:Python异常机制

在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。本期Python培训教程就算教大家关于Python异常机制的内容。

src=http___img3.appinn.com_images_201902_js

Python培训教程分享:Python异常机制,首先我们要理解什么叫做异常?

在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的:比如语法错误、调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的:比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。

这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。

异常的分类:

异常有很多种类型,Python内置了几十种常见的异常,无需特别导入,直接就可使用。

需要注意的是,所有的异常都是异常类,首字母是大写的!

异常的危害:

如果程序中一旦出现了异常的语句代码,则该异常就会立即中断程序的运行!

因此:为了保证程序的正常运行,提高程序健壮性和可用性。我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。

基本语法:

异常的基本结构:try except

# (1)通用异常

try:

pass # 正常执行语句

except Exception as ex:

pass # 异常处理语句

# (2)指定异常

try:

pass # 正常执行语句

except <异常名>:

pass # 异常处理语句

#(3) 捕获多个异常

# 捕获多个异常有两种方式,第一种是一个except同时处理多个异常,不区分优先级:

try:

pass # 正常执行语句

except (<异常名1>, <异常名2>, ...):

pass # 异常处理语句

# 第二种是区分优先级的:

try:

pass # 正常执行语句

except <异常名1>:

pass # 异常处理语句1

except <异常名2>:

pass # 异常处理语句2

except <异常名3>:

pass # 异常处理语句3

# 异常嵌套

try:

try:

with open("abc") as f:

pass

except NameError as e:

print(e)

except OSError as e:

print("OSError:",e.strerror)

机制说明:

首先,执行try子句(在关键字try和关键字except之间的语句)

如果没有异常发生,忽略except子句,try子句执行后结束。

如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常那么对应的except子句将被执行。

在Python的异常中,有一个通用异常:Exception,它可以捕获任意异常。

finally

try:

pass # 正常执行语句

except Exception as e:

pass # 异常处理语句

finally:

pass # 无论是否发生异常一定要执行的语句,比如关闭文件,数据库或者socket

raise语句

很多时候,我们需要主动抛出一个异常。Python内置了一个关键字raise,可以主动触发异常。

raise可以抛出自定义异常,我们已将在前面看到了python内置的一些常见的异常类型。大多数情况下,内置异常已经够用了。但是有时候你还是需要自定义一些异常:自定义异常应该继承Exception类,直接继承或者间接继承都可以,例如:

# 1.用户自定义异常类型

class TooLongExceptin(Exception):

"this is user's Exception for check the length of name "

def __init__(self, len):

self.len = len

def __str__(self):

return "输入姓名长度是" + str(self.len) + ",超过长度了"

try:

name = input("enter your name:")

if len(name) > 5:

raise TooLongExceptin(len(name))

else:

print(name)

except TooLongExceptin as error: # 这里异常类型是用户自定义的

print("打印异常信息:", error)

相关文章:

SharePoint【调试,诊错系列】-- 一种调试Sharepoint2010 Solution的快捷方式

Visual Studio 2010 支持通过F5来调试Sharepoint Solutions&#xff0c;但这种方法却很难用在调试workflows, event recievers, custom controls上&#xff0c;我们往往通过 "Attach to process..."来调试这些模块&#xff0c;关于如何Attach到正确的Process&#xf…

通往SQL Server复制的阶梯:一级- SQL服务器复制介绍

链接&#xff1a;http://www.sqlservercentral.com/articles/StairwaySeries/72274/ 文章&#xff1a;Stairway to SQL Server Replication: Level 1 - Introduction to SQL Server Replication 通往SQL Server复制的阶梯:一级- SQL服务器复制介绍 By Sebastian Meine, 2012/12…

【青少年编程】【三级】青蛙捕虫

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

UI培训教程分享:UI设计的分类有哪些?

本期为大家介绍的UI培训教程是关于UI设计分类这块的&#xff0c;在UI设计中&#xff0c;我们常应用到的终端设备可大致分为三类&#xff0c;分别为移动端UI设计、PC端UI设计、其他终端UI设计。 UI培训教程分享&#xff1a;UI设计的分类有哪些? 1. 移动端UI设计 移动端一般指移…

slider(滑动条)控件模版,样式--用图片定义控件模版

初接触wpf&#xff0c;想自己用图片做一个个性slider滑块控件&#xff0c;网上找了很久无果。后来一些机缘巧合看别人源码的时候找到了类似的&#xff0c;然后自己再查了一下msdn&#xff0c;大概弄懂了。 我们先来看看slider控件组成元素。 Slider控件组成&#xff1a; 用图片…

360浏览器调用selenium

2019独角兽企业重金招聘Python工程师标准>>> 360浏览器调用selenium package com.demo;import java.io.File; import java.io.IOException;import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver;…

【组队学习】【28期】R语言数据科学

R语言数据科学 论坛版块&#xff1a; http://datawhale.club/c/team-learning/36-category/36 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/RLanguage 学习目标 向零基础的同学介绍如何利用R语言进行数据分析。通过学习&…

零基础参加Java培训班合适吗

零基础参加Java培训班合适吗?对于这个问题&#xff0c;首先答案是肯定的&#xff0c;零基础学习java技术最靠谱最快速的方法就是报java培训班进行学习了&#xff0c;来看看下面的详细介绍就知道了。 零基础参加Java培训班合适吗? 能够想到参加Java培训班学习的同学一般分为三…

用VS(c#)创建、调试windows service以及部署卸载

同事问到windows service的东东&#xff0c;现在整理一下&#xff0c;用c#如何创建一个windows service&#xff0c;以及如何调试、部署、卸载。 一、创建windows service 1. 打开VS2008&#xff0c;新建一个Project, Project类型选择Visual C#-Windows&#xff0c;在Templates…

【组队学习】【28期】基于Python的会员数据化运营

基于Python的会员数据化运营 论坛版块&#xff1a; http://datawhale.club/c/team-learning/37-category/37 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-data-mining/tree/master/MemberOperations 学习目标 数据化运营是业务知识与编程技能…

异步系统接口调用流程图

2019独角兽企业重金招聘Python工程师标准>>> 异步系统接口调用流程图 博客分类&#xff1a; java ................................... 转载于:https://my.oschina.net/xiaominmin/blog/1597725

java培训教程分享:Java中用户如何自定义异常?

我们在学习java技术的时候应该有了解过&#xff0c;在java中是定义了很多的异常类的&#xff0c;虽然这些大量异常类可以帮助我们描述编程时出现的大部分异常情况&#xff0c;但是在程序开发中有时可能需要描述程序中特有的异常情况&#xff0c;例如在设计divide()方法时不允许…

【组队学习】【28期】基于transformers的自然语言处理(NLP)入门

基于transformers的自然语言处理(NLP)入门 论坛版块&#xff1a; http://datawhale.club/c/team-learning/39-category/39 开源内容&#xff1a; https://github.com/datawhalechina/Learn-NLP-with-Transformers 学习目标 自然语言处理&#xff08;Natural Language Pro…

java io在文件结尾持续添加内容

[代码] java io在文件结尾持续添加内容 public static void write(String path, String content) {try {File f new File(path);BufferedWriter output new BufferedWriter(new FileWriter(f,true));output http://www.szhaoexport.com/linked/20130222.do; .write(content &…

Docker1.12让容器使用和宿主机同一个网段

2019独角兽企业重金招聘Python工程师标准>>> Docker1.12让容器使用和宿主机同一个网段 博客分类&#xff1a; docker 由于开发的一些特殊需求&#xff0c;需要将容器部署在与宿主机同一个网段中&#xff0c;部署步骤如下&#xff1a;步骤一&#xff1a;创建网络$ …

java培训分享:java培训架构师学习线路图

本期java教程分享主要是讲解关于java培训架构师方面的内容&#xff0c;主要针对java架构师的学习线路图进行一个知识点的概括&#xff0c;下面来看看学习java架构师都需要了解哪些内容吧。 java培训分享&#xff1a;java培训架构师学习线路图 1、常见模式与工具 学习Java技术体…

设计中涉及到的dip、dp、px、sp等单位说明

在进行UI设计中常会遇到各种数值单位&#xff0c;开始使用时也常搞混&#xff0c;于是搜集了单位解说的文章与大家一同分享 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关&#xff0c;一般我们为了支持WVGA、HVGA和QVGA 推荐使用…

【组队学习】【28期】Datawhale组队学习内容介绍

第28期 Datawhale 组队学习活动马上就要开始啦&#xff01; 本次组队学习的内容为&#xff1a; 吃瓜教程——西瓜书南瓜书李宏毅机器学习动手学数据分析集成学习SQL编程语言R语言数据科学基于Python的会员数据化运营数据采集从入门到精通基于transformers的自然语言处理(NLP)入…

多线程读一个全局变量要不要加锁?还是说只是当修改全局变量的时候才要加锁?...

如果所有线程都只读取该变量的话不必加锁&#xff0c;因为仅读取不存在破坏数据的风险&#xff0c;如果有线程写该变量的话不管读取还是写入都要加锁的。

java培训教程分享:Java编写软件代码自动提示功能

本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能&#xff0c;很多零基础和初学java的同学们对这一块还不是很了解&#xff0c;Eclipse for android 实现代码自动提示智能提示功能&#xff0c;以下是介绍 Eclipse for android。 java培训教程分享&#x…

iOS WebviewJavascriptBridge 源码研读笔记

这两天接近元旦&#xff0c;事情稍微少些&#xff0c;有些时间&#xff0c;索性写点什么&#xff0c;就从最擅长的iOS混合开发写起了&#xff0c;由于iOS开发经验不到四年吧&#xff0c;期间还搞了一年半的前端&#xff0c;有些知识可能还是积累的不足&#xff0c;能力不足&…

Debian上网的问题小结

装完系统或装系统中很重要的部分就是配置网络的问题了&#xff0c;记得刚安装Debian的时候还不知道dhclient eth0真是杯具。 关于怎么设置识别网卡su->输入root密码->nano /etc/network/interface然后分情况&#xff0c;如果你是有线的且只有一个网卡&#xff0c;就叫eth…

【组队学习】【28期】青少年编程(Scratch 一级)

青少年编程&#xff08;Scratch 一级&#xff09; 论坛版块&#xff1a; http://datawhale.club/c/team-learning/34-category/34 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/Scratch 学习目标 全国青少年软件编程等级考…

java培训教程分享:Java中怎样将数据对象序列化和反序列化?

本期为大家介绍的java培训教程是关于“Java中怎样将数据对象序列化和反序列化?”的内容&#xff0c;相信大家都知道&#xff0c;程序在运行过程中&#xff0c;可能需要将一些数据永久地保存到磁盘上&#xff0c;而数据在Java中都是保存在对象当中的。那么我们要怎样将对象中的…

C#实现的几种委托

//普通委托DeleteShow ds new DeleteShow(ShowName);Console.WriteLine("----------------------");Console.WriteLine("普通委托----请输入用户名:");string Name Console.ReadLine();Console.WriteLine(ds(Name));Console.WriteLine("-----------…

AFN框架使用整理

1.AFN框架基本使用 1 AFN内部结构 AFN结构体 NSURLConnection(iOS9.0废弃了) AFURLConnectionOperationAFHTTPRequestOperationAFHTTPRequestOperationManager(封装了常用的 HTTP 方法) 属性 baseURL :AFN建议开发者针对 AFHTTPRequestOperationManager 自定义个一个单例子类&a…

【青少年编程】【一级】小镇一日游

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

参加java培训后,就业方向有哪些

参加java培训后&#xff0c;就业方向有哪些?很多正在参加java培训的同学对这个问题都比较关注&#xff0c;那么下面小编就针对这个问题为大家做下详细的介绍&#xff0c;希望能够帮助到大家。 参加java培训后&#xff0c;就业方向有哪些?首先我们来了解一下Java的应用领域&am…

访问本地文件403

电脑不知道怎么设置的根目录下看不到所有文件夹 而且打开一个新的文件夹显示 Forbidden You dont have permission to access /atina/ on this server. 最后没办法只能手动把文件夹加上权限 chmod -R 777 atina //-R 递归修改&#xff0c;“/文件夹/“以下所有内容&#xff08…

iOS微信支付集成 SDK1 7 5

最近做了一个新项目&#xff0c;涉及到支付宝和微信支付&#xff0c;支付宝和微信都是业界的老大哥&#xff0c;相信大家都有所觉得文档、SDK都是各种坑吧&#xff08;纯粹吐槽而已&#xff09;&#xff0c;这是继上篇支付宝支付集成后接着的微信支付集成。 1.微信商户申请步骤…