异常和函数

#异常和函数能够很自然的一起工作。如果异常在函数内引发而不处理,就会被传播至函数调用的地方。如果异常在函数调用的地方也没有被调用,就会继续传播,一直达到主程序。

#如果主程序也没有做异常处理,异常就会被Python解释器捕获,输出一个错误信息,然后退出程序。

#例如:

 1
 2 #!/usr/bin/python3
 3 #-*-coding:UTF-8-*-
 4 #异常9.11_异常和函数
 5
 6 def division_fun(x,y):
 7     return x/int(y)
 8
 9 def exp_fun(x,y):
10     return division_fun(x,y)*10
11
12 def main(x,y):
13     exp_fun(x,y)
14
15 main(2,0)

#执行结果如下:

 1 D:\Pythonworkspace>python 异常9.11_异常和函数.py
 2 Traceback (most recent call last):
 3   File "异常9.11_异常和函数.py", line 14, in <module>
 4     main(2,0)
 5   File "异常9.11_异常和函数.py", line 12, in main
 6     exp_fun(x,y)
 7   File "异常9.11_异常和函数.py", line 9, in exp_fun
 8     return division_fun(x,y)*10
 9   File "异常9.11_异常和函数.py", line 6, in division_fun
10     return x/int(y)
11 ZeroDivisionError: division by zero

#由执行结果看到,division_fun函数中产生的异常通过division_fun和exp_fun函数传播,exp_fun中的异常通过exp_fun和main函数传播,传递到函数调用处由解释器处理,最终抛出堆栈的异常信息。

#异常信息是以堆栈的形式被抛出的,因而是从下往上查看的。所谓堆栈,就是最先被发现的异常信息最后被输出(就像子弹入弹夹和出弹夹一样),也被称作先进后出(First In Last Out,Filo)。

原文地址:https://www.cnblogs.com/DLHe/p/8242912.html

时间: 2025-01-16 07:39:13

异常和函数的相关文章

python 学习笔记day06-错误和异常、函数基础

错误和异常 基本概念 错误 从软件方面来说,错误是语法或是逻辑上的 - 语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译,这些错误必须在程序执行前纠正 - 逻辑错误可能是由于不完整或是不合法的输入所致,还可能十逻辑无法生成.计算,或是输出结果需要的无法执行 异常 当python检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常 异常是因为程序出现了错误而在正常控制流以外采取的行为 这个行为又分为两个阶段: - 首先是引起异常发生的错误 - 然后是检

异步异常重试函数-tryCall

在spa程序中我们遇到的网络环境和传统网页程序不同,因此思维也不能喝传统页面雷同,面对不稳定的网络环境,为了不使一点网络不稳定就造成程序错误,需要引入容错能力,tryCall就是这样一个函数,在出现异常的情况下可以进行重试,重试的时间间隔和总次数可以自定义 //当fn调用发生异常后间隔interval后尝试,最多尝试n次,fn(done,fail)1 var tryCall=function (fn, interval, n) { 2 return function (done, fail) {

Java8的flatMap如何处理有异常的函数

Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional. 见到的映射函数往往都只有一句话,连大括号都不需要加的,如下: String personValue = Optional.ofNullable(map.get("person")) .flatMap((value) -> Optional.of(value.toString().trim())) .orElse(""); 可

windows C++ 全局异常捕捉函数

windows 核心编程中讲过 SEH 结构化异常处理 ::SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); LONG WINAPI MyUnhandledExceptionFilter(EXCEPTION_POINTERS* exp) { return EXCEPTION_EXECUTE_HANDLER; }

java基础异常(毕向东老师)

异常:不正常.在运行时期发生的一些不正常情况.就是异常.异常的由来.程序运行是总会class ExceptionDemo{public static void main(String[] args){int[] arr=new int[2];System.out.println(arr[2])}} 异常情况有多钟,都需要分别描述,意味着异常情况应该会有一个体系.多一个异常具备共性不断地向上抽取,就形成了体系.异常还有一个父类.通过查阅API,发现异常体系是这样的:Throwable|--Erro

Windows异常分发

当有异常发生时,CPU会通过IDT表找到异常处理函数,即内核中的KiTrapXX系列函数,然后转去执行.但是,KiTrapXX函数通常只是对异常做简单的表征和描述,为了支持调试和软件自己定义的异常处理函数,系统需要将异常分发给调试器或应用程序的处理函数. 为了更好的管理异常,Windows系统定义了专门的数据结构EXCEPTION_RECORD来描述异常. typedef struct _EXCEPTION_RECORD { DWORD                    ExceptionC

Java基础—异常

一.  Exception异常 1. 概述 异常是程序在运行时出现的错误 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述.并封装成对象. 其实就是java对不正常情况进行描述后的对象体现. 2. Java的异常体系 1. 从图中可以看出Throwable下有两个子类,Error和Exception 对于严重的问题,java通过Error类进行描述.对Error类一般不编写针对性的代码对其进行处理. 对于非严重的,java通过Exception类进行描述.对于Ex

函数:声明和表达式

函数:声明和表达式 函数,像变量一样,可以在代码的任意地方定义它. JS 提供了几个方法去定义它们. 1.函数声明     (Function Declaration) 2.函数表达式  (Function Expression) 3.通过调用new Function 返回. 语法 创建一个函数的基本方法是通过一个函数声明.语法如下: function f(arg1, arg2, ...) {    ... code ... } 实现起来像这样子: 1 function sayHi(name)

黑马程序员——Java基础---多态、内部类、异常、包

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.多态 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的对象赋值给父类类型的引用. 猫这个对象对应的类