首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

6.1 错误类型

对于小白而言,运行编写程序遇到报错,往往不知所措,不清楚什么原因造成。完美的程序是不存在,程序有异常才是常态,所以遇到缺陷不要慌,找到错误根因解决它就行了。...为了避免语法错误,建议使用Pycharm IDE,IDE语法分析器可以实时check编写程序过程中语法错误,并给出提示。...语句 try/except 语句还有一个可选 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。...else: print("输入数字且没有异常") finally: print("不管是否异常,都会执行") >>请输入一个数字: q 您输入不是数字,请再次尝试输入!...不管是否异常,都会执行 重点一下finally语句使用场景,作为测试岗位,会经常使用Python处理一些数据文件,需要对文件进行读写操作,当你读写操作进行完毕后,这时候建议使用finally语句对这些文件进行关闭

1.1K10

Python 基础(十四):错误和异常

程序中错误我们通常称为 bug ,工作中我们不仅需要改自己程序中 bug ,还需要改别人程序中 bug ,新项目有 bug 要改,老项目也有 bug 要改,可以 bug 几乎贯穿一个程序员职业生涯...错误 错误 通常是指程序中 语法错误 或 逻辑错误,来通过两个 Python 例子看一下: 语法错误示例 #print前面少了 : if True print("hello python")...我们编写程序通常使用开发工具编写,比如:使用 Pycharm 工具编写 Python 程序,像这种语法错误,在编写程序时,编译器就会检测出来并提示我们,因此,我们编写程序几乎不会出现这种问题。...异常 即便 Python 程序语法是正确,在运行时候,也有可能发生错误,运行期检测到错误被称为异常;大多数异常都不会被程序处理,都以错误信息形式展现。...抛出异常 使用 raise 语句允许强制抛出一个指定异常,要抛出异常由 raise 唯一参数标识,必需是一个异常实例或异常类(继承自 Exception 类),如: raise NameError

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

python中异常捕获

无论是编程新手还是老手,都会遇到过程序报错,终止执行情况,对于python报错信息,可以分为以下两大类 语法错误,syntax error 异常, exception 两类报错信息示意如下 #...call last): File "", line 1, in NameError: name 'a' is not defined 如果对于基础语法不熟悉,就可能编写语法错误代码...此时才意识到代码存在bug, 这也是为什么软件开发不能一步到位,而是不断迭代升级原因,只有当代码处理项目足够多,范围足够广,才能够发现现有代码不足,从而做出改进。.... >>> calc(2, 1) 2.0 >>> calc(2, 0) [Warning] 0 is zero inf try语句具体原理如下 将可能存在异常语句放置在try代码块中 用except...try语句有两个可选语句 else finally else语句只有当try中代码没有抛出异常时,才会执行; finally语句在try语句正常执行或者异常被处理之后就会执行,示例如下 >>> def

1.9K30

Day15.异常处理

("OK") 学习引导: 语法错误 处理异常 异常else 异常finally 自定义异常 异常 在我们刚接触python时候,肯定遇到过无数次报错。...python中有两种错误很容易辨认:语法错误和异常。 语法错误 python语法错误又称为解析错,多数是语法格式上出现问题。...") #试图打开一个本不存在文件 except IOError as e: #IOErro:指要打开文件不存在错误提示,Try语句错误与expect匹配,执行print语句。...如果第一个except中定义异常与引发异常匹配,则执行该except中语句。 如果引发异常不匹配第一个except,则会搜索第二个except,允许编写except数量没有限制。...如果所有的except都不匹配,则异常会传递到下一个调用本代码最高层try代码中。 异常else 如果判断完没有某些异常之后还想做其他事,就可以使用下面这样else语句

76210

python基础教程:错误处理和异常处理

转换为整数那条语句报出了异常,后面的语句就不再执行,而是跳到except那里去执行里面的语句。...每次遇到异常最多会执行一个except子句,也就是,处理程序只处理相应异常,而不处理同一try语句内其它处理程序异常。...else 子句,在使用时必须放在所有的 except 子句后面。...('zzz.txt', 'has', len(f.readlines()), 'lines') f.close() 使用else子句好处是,避免了意外捕获由else子句引发异常。...也就是,程序中我们只想捕获open引发异常,而不捕获f.readlines()引发错误。 异常在抛出时可能具有关联值,称为异常参数。参数存在和类型取决于异常类型。

1K20

诡异else

计算机程序由两部分组成,数据和语句。每一类数据有一个对应数据类型,不同编程语言有不同分类方法,但是不管怎么,任何语言都有整数、小数、字符串。...在条件语句中,我们通常会写if … else …或者 if … elif … else …,这两个语句大家用多应该都知道是如何执行就不讲了。...实际上else可以脱离if而存在,但是else自己不能单独存在,但也不是所有的语句都能够和else缠在一起,比如import语句。...为此,可以使用try … except … else语句执行方式是当try执行完之后没有任何异常,跳过except,直接执行else语句,如果有异常,要么被except排除,要么就程序崩溃。...这样就可在循环后面使用一条if语句来判断循环是否是提前结束。如图所示: ? 一种更简单方法是在循环后面添加一条else语句仅在没执行break时执行。修改上面的代码如下即可: ?

93320

【Python3之异常处理】 转

UnboundLocalError 试图访问一个还未被设置局部变量,基本上是由于另有一个同名全局变量,导致你以为正在访问 ValueError 传入一个调用者不期望值,即使值类型是正确...(): print('输入是空格,就执行这里逻辑') elif len(num1) == 0: print('输入是空,就执行这里逻辑') else: print('...,都是ValueError,相同错误按理只处理一次就可以了,而用if,由于这二者if条件不同,这只能逼着你重新写一个新if来处理第二段代码异常 第三段也一样 try...except 语法...#如果引发了'name'异常,获得附加数据 else: #如果没有异常发生 ?...该参数是可选,如果不提供,异常参数是"None"。 最后一个参数是可选(在实践中很少使用),如果存在,是跟踪异常对象。

1.2K20

【Python 入门第十八讲】Try Except应用

: 如果命中文件末尾而不读取任何数据ImportError: 如果找不到模块语法错误当未遵循该语言正确语法时,就会引发语法错误。...我们在 try 中编写不安全代码,在 except 中编写回退代码,在 finally 块中编写最终代码。...如果发生任何异常,但代码中 except 子句不处理,则会将其传递给外部 try 语句。如果异常未得到处理,则执行将停止。...You are dividing by zero ")divide(3, 0)示例 3:除语句另一种编写方式如下所示,通过这种方式,只接受您要捕获异常,或者您可以检查发生了哪个错误。...(3, "GFG") divide(3,0) Else语句在 Python 中,您还可以在 try-except 块上使用 else 子句,该子句必须在所有 except 子句之后存在

23420

为什么程序员都不喜欢使用switch,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...4、switch 优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

42530

为什么程序员都不喜欢使用switch,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...switch优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

52220

为什么程序员都不喜欢使用 switch ,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...switch 优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

44820

为什么程序员都不喜欢使用switch,而是大量 if…else

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...Switch优点: 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

53820

为什么程序员都不喜欢使用switch,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...switch优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

56750

为什么程序员都不喜欢使用switch,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...switch优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

36410

为什么程序员都不喜欢使用switch,而是大量 if……else if ?

语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生事情,而这个语法错误在诸多语法检查器上没有办法检查出来...上面的代码为了保证正确添加了else做一个逻辑上保证,其实如果不写else,这段代码也不会发生逻辑错误,而且一旦忘记写花括号时候,语法编译器是会提示添加,甚至可以使用eslint这种工具强制使用花括号...,这样就不会犯语法错误了,一旦出现bug,那么肯定是逻辑上问题了。...switch优点 既然switch有这么严重缺点,那怎么在所有语言中依然会存在呢?那就说下switch优点吧,优点也刚好是缺点。...那还有一个问题,为什么要使用break来做一个判断结束呢?这不是很容易造成语法错误了?那就要说到子函数问题上了。

1.1K20

编写快速安全Bash脚本建议

使用它来使您shell脚本更好! 我们会像讨论编程语言一样讨论bash,因为,怎么呢,它就是。 这篇文章目标不是bash编程详解。不会在bash中做复杂编程,也真的不计划学习如何去做。...还有 局部变量 ,它们作用域只能存在于bash函数中。 基本上从来没有使用过这样函数(不像我写其他编程语言),从来没有使用过局部变量。 for循环 以下是在bash中编写循环方法。...您也可以使用反引号或$()来插入命令输出。 OUTPUT=`command` # or OUTPUT=$(command) if 语句 在 bash 中 If 语句是相当让人讨厌去记。...成功会返回0,否则返回错误。 最后一件事是为什么[[比[好:如果你使用[[,那么你可以使用<做比较,它不会变成文件重定向。...if 事:今天学到是不需要通过[[或者[去使用 if 语句:任何有效命令都会工作。

1.8K80

一文搞懂Python异常错误

为什么要写这篇呢,之前有很多小伙伴在运行代码时遇到了各种各样问题,甚至有这样一句话,编程一小时,找错一整天,所以小卡今天就整理了一下日常常见几种报错类型,come~ 首先我们来说一下错误和异常,...在程序中难免会出现各种错误,而错误分为两种,第一种是语法错误,这种错误你是无论如何都跑不出来,看着终端红颜色一片脑壳都有点痛,所以这种错误执行程序前要修正;第二种呢就是逻辑错误,比如用户输入不合适等一系列错误...什么是异常呢,异常就是程序运行时,某一句引发错误导致之后代码都无法运行,是不是有点丛林大盗感觉,此山是开,此树是栽,哎呀呀~ 在Python无法正常处理程序时就会发生一个异常。...异常是程序错误引起,和语法错误没有关系哦,语法错误一定要及时修正!!!...此外,与python异常相关关键字主要有: 关键字 关键字说明 try/except 捕获异常并处理 pass 忽略异常 else 如果try语句没有引发异常,则执行else语句 as 定义异常实例

76710

实现JavaScript语言解释器(二)

那么为什么这棵语法树是抽象呢?这是因为在语法解析阶段一些诸如分号和左右括号等用来组织代码用token会被去掉,因此生成语法树没有包含词法解析阶段生成所有token信息,所以它是抽象。...在语法解析阶段,如果Simple解释器发现输入Token字符串不能通过既定语法规则来解析,就会抛出一个语法错误(Syntax Error),例如赋值语句没有右表达式时候就会抛出Syntax Error...if语句块后面可以选择性地跟上另外一个else语句块或者else if语句块: if (isBoss) { console.log('niu bi'); } else { console.log...在实现Simple语言过程中,为了更好地学习语法解析原理,没有直接使用这些工具,而是通过编写一门灵活用来定义语法规则**领域专用语言(DSL)**来定义Simple语言语法规则。...例如JQuery就是一门内部DSL,里面封装了很多对页面DOM操作函数,由于功能很有局限性,所以它可以封装出更加符合人们直觉API,而且编写代码可读性会比直接使用浏览器原生native

55310

Python进阶|聊聊异常处理

错误与异常 编写程序出错,至少有两种可能,一是语法错误,二就是我们异常。...,我们程序运行结果是表示捕捉到了0不能为分母错误,那NameError为什么没有被捕捉到了?...那是因为程序存在多个except异常时,程序最多只有一个会被执行并捕捉,简单,最先捕捉异常会被执行,其他都会被忽略。 那有时候我们事先并不知道有多少异常,应该怎么处理了?...那我们通过raise玩个好玩事情,0不能为分母异常提示是英文自己主动抛出个异常,换为中文提示。 try: raise ZeroDivisionError('分母不能为零!!')...简单,我们自己写异常类必须直接或间接集成Exception类。

58730

React 条件渲染最佳实践(7 种方法)

; } })()} ); 如你所见,仅 if 语句就太冗长了。这就是为什么不建议在 JSX 中使用 if-else 语句原因。...三元运算符还可用于替换多个条件渲染(if-else if-else)或嵌套条件渲染。 但是,不建议你使用它,因为它比普通 if-else 语句更难读。...使用&&运算符,你不需要写多余代码。 但是,请记住,不能将&&运算符替换为if-else语句,更不用if-else if-else语句了。...这就是之前所说相同类型条件。 switch-case语句不能用于处理复杂和不同类型条件。但是你可以使用通用if-else if-else语句去处理那些场景。...你可以使用 HOC 来保护那些组件,而不是在每个需要身份验证组件中编写if-else语句

5.7K20
领券