异常处理

异常处理与函数

自作多情 提交于 2019-12-18 14:41:37
异常处理 try/except用于处理异常,在正在运行的程序或脚本的上下文环境中处理错误。 try: print ( "[+] 1337/0 =" +str ( 1337/0 )) except: print ( "[-] Error." ) 可以将异常的报错消息储存到变量e中,以便方便其打印出来,同时需要显示式的将变量e转换成一个字符串。 try: print ( "[+] 1337/1 = " +str ( 1337/0 )) except Exception as e: print ( "[-] Error=" +str ( e )) 函数 在python中,函数提供了高效的可重用的代码块。通常,这使得程序员能够编写一个用以完成一个任务单一、(与程序的其他部分)高度耦合的操作的代码块。关键字def()表示函数开始。 小脚本用于探测目标主机FTP服务。 import socket def retBanner ( ip,port ) : try: socket.setdefaulttimeout ( 2 ) s = socket.socket ( ) s.connect (( ip , port )) banner = str ( s.recv ( 1024 )) return str ( banner ) except Exception as e: print ( "[-

Python 中的异常及其处理

非 Y 不嫁゛ 提交于 2019-12-18 05:56:48
1、为什么要有异常处理呢? 下面是一个例子 num = eval ( input ( "请输入一个数字" ) ) print ( num ** 2 ) 这个代码很简单,让用户输入一个数字,然后输出它的平方。 但是如果用户输入的不是数字,而是一个字符呢? 这时,程序就会报错,但是这样对于那些不熟悉程序的人,在使用这款 软件的时候,他不小心输入了一个字符,而程序却像图片中那样终止程序,并且输出一段不知道意思的文字,显然是不太友好的。 num = eval ( input ( "请输入一个数字" ) ) if ( num 是一个数字 ) : print ( num ** 2 ) else : print ( "您输入的不是数字" ) 而所谓的异常处理,就是 不使用 if, 而使用 try,except来捕获异常,并且对异常进行处理,来避免出现像最上面的那个图片那样输出一大堆用户不知所云的东西 try : num = eval ( input ( "请输入一个数字" ) ) print ( num ** 2 ) except : print ( "您输入的不是数字" ) 这样用户不会不知所云。 2、异常处理的基本使用 try : num = eval ( input ( "请输入一个数字" ) ) print ( num ** 2 ) except : print ( "您输入的不是数字"

python初学之异常处理

不打扰是莪最后的温柔 提交于 2019-12-17 21:36:50
上一个博客里面介绍了文件相关操作及os模块简单操作,今天来介绍一下异常处理,主要从以下几个方面进行展开: 1、什么是异常 2、异常处理机制 3、触发异常 4、用户自定义异常 01 什么是异常? 1.首先呢,我们需要了解Error(错误) 和 Exception(异常) 的区别: 1)Error (错误) 是系统中的错误, 程序员是不能改变和处理 的, 如系统崩溃,内存空 间不足,方法调用栈溢等。 遇到这样的错误,建议让程序终止。 2)Exception (异常 )表示 程序可以处理的异常 ,可以捕获且可能恢复。 遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。 2. 常见的异常 还有类似以下异常 都是比较常见的,值得引起注意: AttributeError(属性错误) 、 IOError(输入输出异常) 、 ImportError(模块导入错误) 、 IndexError(索引错误) 、 SyntaxError(语法错误) 、 TypeError(类型错误) 、 ValueError(值错误) 、 KeyError(元素不存在) 、 NameError(命名错误) • IndentationError : 缩进错误 • KeyboardInterrupt : Ctrl+C 被按下 • UnboundLocalError : 有同名的全局变量 02 异

《Java编程思想》第十二章 通过异常处理错误

一世执手 提交于 2019-12-17 17:02:25
java的基本理念是“结构不佳的代码不能运行” 。 发现错误的理想实际时在编译阶段,也就是在你试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接收者-该接收者知道如何正确处理这个问题。 改进的错误恢复机制是提供代码健壮性的最强有力的方式。Java使用异常来提供一致性错误报告模型,使得构件能够与客户端代码可靠地沟通问题。 基本异常 异常情形是指组织当前方法或作用域继续执行下去的问题。把异常情形与普通问题向区分很重要,所谓的普通问题是指,在当前环境下能得到足够的信息,总能处理这个错误。而对于异常情形,就不能继续下去了,因为当前环境下无法获得必要的信息来解决问题。你所能做的就是从当前环境跳出,并且把问题提交给上一级环境。这就是抛出异常时所发生的事情。 当抛出异常后,有几件事情会随之发生。首先,同Java中其他对象的创建一样,将使用new在堆上创建异常对象,然后,当前的执行路劲被终止,并且从当前环境中弹出对异常对象的引用,此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务时将程序从错误状态中恢复,以使程序能要么换一种方式运行,要么继续运行下去。抛出异常,看起来像这样: if(t == null) throw new

ASP.NET中异常处理的注意事项

佐手、 提交于 2019-12-17 12:33:08
一、ASP.NET中需要引发异常的四类情况 1、如果运行代码后,造成内存泄漏、资源不可用或应用程序状态不可恢复,则引发异常。Console这个类中,有很多类似这样的代码: if ((value < 1 ) || (value > 100 )) { throw new ArgumentOutOfRangeException( " value " , value, Environment.GetResourceString( " ArgumentOutOfRange_CursorSize " )); } 2、在捕获异常的时候,如果需要包装一些更有用的信息,则引发异常。这类异常的引发在UI层特别有用。系统引发的异常所带的Message往往更倾向于技术性的描述,而在UI层,异常的用户很可能是最终用户。如果我们需要将异常的Message信息呈现给最终用户,更好的做法是包装异常,然后引发一个含有友好信息的新异常。 3、如果底层异常在高层操作的上下文中没有意义,则可以考虑捕获这些底层异常,并引发新的有意义的异常。如将一个InvalidCastException引发为新的ArgumentException。 4、捕获底层API错误代码,并抛出。Console为我们封装了调用windows api返回的错误代码,而让代码引发一个新的异常。 二、ASP.NET系统自带的异常类 1、Exception

Java Exception 异常处理

心已入冬 提交于 2019-12-17 02:16:48
一、定义 异常(Exception) : 是指程序运行时出现的非正常情况,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。 二、两大常见的异常类型 • RuntimeException(运行时异常 ) :主要包括“错误的类型转换”、“数组下标越界”、“数组越界”和“空指针”等,这种RuntimeException往往是由于程序的不正确导致的; • Non-RuntimeException(非运行时异常) :主要包括“从一个不存在的文件中读取数据”、“越过文件结尾继续读取”、“连接一个不存在的URL”等,这种Non-RuntimeException一般是在编译器编译时产生的,通常由环境因素造成,而不是程序本身的作用导致的,例如:IOException。 三、异常处理的两种方式 ①用 try......catch......(finally) 捕获异常 try{ 可能遇到的异常 } catch{ 处理异常的方法 } finally{ 程序输出的内容 } (注意:①try 在程序中不能单独使用,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象;②finally语句为异常处理提供了一个统一的出口,无论在try代码块中是否发生了异常,finally块中的语句都会被执行,即finally语句无论遇到什么异常都会输出。) ②用 throws

异常处理

白昼怎懂夜的黑 提交于 2019-12-17 00:17:59
一、什么是异常处理 异常 是错误发生的信号,一旦程序出错就会产生一个异常, 如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止。 异常包含三个部分: traceback异常的追踪信息 异常的类型 异常的信息 错误分为两大类: 1.语法上的错误:在程序运行前就应该立即修正 2.逻辑上的错误 二、为何要异常处理 避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 三、如何异常处理 try : #try监听下面的代码块 代码 1 代码 2 代码 3 . . . . . . except NameError: 当抛出的异常时 NameError时执行的子代码块 # 异常处理: try : print ( '====>1' ) print ( '====>2' ) print ( '====>3' ) l = [ 1 , 2 , 3 ] l [ 100 ] #IndexError #运行到此处直接跳到except下的代码块 print ( '====>4' ) #不执行 except IndexError : print ( 'IndexError' ) #异常处理多分支 try : print ( '====>1' ) print ( '====>2' ) print ( '====>3' ) l = [ 1 , 2 , 3 ] d =

spring boot----全局异常处理

谁说我不能喝 提交于 2019-12-16 07:15:30
全局异常处理: package com . jscz ; import org . slf4j . Logger ; import org . slf4j . LoggerFactory ; import org . springframework . http . HttpStatus ; import org . springframework . http . converter . HttpMessageNotReadableException ; import org . springframework . validation . BindException ; import org . springframework . validation . BindingResult ; import org . springframework . validation . FieldError ; import org . springframework . web . HttpMediaTypeNotSupportedException ; import org . springframework . web . HttpRequestMethodNotSupportedException ; import org . springframework . web .

Spring Cloud微服务如何设计异常处理机制?

独自空忆成欢 提交于 2019-12-16 00:38:27
前言 今天和大家聊一下在采用Spring Cloud进行微服务架构设计时,微服务之间调用时异常处理机制应该如何设计的问题。我们知道在进行微服务架构设计时,一个微服务一般来说不可避免地会同时面向内部和外部提供相应的功能服务接口。面向外部提供的服务接口,会通过服务网关(如使用Zuul提供的apiGateway)面向公网提供服务,如给App客户端提供的用户登陆、注册等服务接口。 而面向内部的服务接口,则是在进行微服务拆分后由于各个微服务系统的边界划定问题所导致的功能逻辑分散,而需要微服务之间彼此提供内部调用接口,从而实现一个完整的功能逻辑,它是之前单体应用中本地代码接口调用的服务化升级拆分。例如,需要在团购系统中,从下单到完成一次支付,需要交易系统在调用订单系统完成下单后再调用支付系统,从而完成一次团购下单流程,这个时候由于交易系统、订单系统及支付系统是三个不同的微服务,所以为了完成这次用户订单,需要App调用交易系统提供的外部下单接口后,由交易系统以内部服务调用的方式再调用订单系统和支付系统,以完成整个交易流程。如下图所示: 这里需要说明的是,在基于SpringCloud的微服务架构中,所有服务都是通过如consul或eureka这样的服务中间件来实现的服务注册与发现后来进行服务调用的,只是面向外部的服务接口会通过网关服务进行暴露,面向内部的服务接口则在服务网关进行屏蔽

go 语言之异常处理

↘锁芯ラ 提交于 2019-12-15 19:48:28
go语言   异常处理:   自定义set 异常处理: package main import "fmt" //异常处理(直接拷defer func()...) func f1() { fmt.Println("f1....") } func f2() { defer func() { //recover() //此时表示出现错误,也会继续向下执行 if a:=recover();a!=nil{ //出了错误要做什么事 //a 如果不等于nil 表示这个程序出了异常,a就是异常信息 // a 等于nil 就表示没有异常 fmt.Println("出错了") fmt.Println(a) //这就是异常信息 } //永远会被执行的(相当于finally)最后做的事 }() fmt.Println("f2...")   panic("你给我出去") //主动抛异常 var a = make([]int,3,3) fmt.Println(a[4]) } func f3() { fmt.Println("f3..") } //处理异常 // defer 表示延迟调用 // panic 就是python中的raise(主动抛异常) // recover 恢复程序 继续执行 func main() { //derfer 是先注册,后调用,后注册的先执行 // 即便程序=出现严重错误,也会执行