异常处理

python3 异常处理

浪子不回头ぞ 提交于 2019-12-19 11:36:18
1.异常和错误 1.1 语法错误 #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 1.2 逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 2.python中异常种类 AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类) ;代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 尝试访问一个没有申明的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError 传入对象类型与要求的不符合 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它 ValueError

Java异常处理机制 —— 深入理解与开发应用

筅森魡賤 提交于 2019-12-19 07:48:56
   本文为原创博文,转载请注明出处,侵权必究!   Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try、catch、finally、throw、throws,以及各种各样的Exception。本篇文章主要在基础的使用方法上,进一步分析在开发中如何使用异常机制更合理。 try-catch-finally     try-catch-finally块的用法比较简单,使用频次也最高。try块中包含可能出现异常的语句(当然这是人为决定的,try理论上可以包含任何代码),catch块负责捕获可能出现的异常,finally负责执行必须执行的语句,这里的代码不论是否发生了异常,都会被执行。     针对这部分,因为很基础,所以就提几点比较关键的建议:       1、当你在写try-catch语句的时候,脑子里是知道自己要去针对哪种异常进行处理的,不要只是以防万一,加了个catch(Exception e),这是毫无意义的。并且,一个try块中可能有多个异常,对于每一类异常,要分别写一个catch进行捕获。              2、针对可能出现异常的语句进行try-catch,大段代码的try-catch会非常不利于维护代码时定位异常可能发生的位置,对于肯定不会发生异常的稳定的代码,不需要放在try块中。       3、try-catch虽然在功能上

java中的异常处理机制

瘦欲@ 提交于 2019-12-19 05:49:31
1.java中的异常分类     java异常层次结构图:          1. Throwable(可抛出): 是java异常类中的所有类的父类,所有类都直接或间接的继承它,有两个重要的直接子类:Error,Exception 2. Error(错误) : 是程序无法处理的错误,表示运行应用程序中较严重问题。 大多数错误与代码编写者执行的操作无关,而表示代码运 行时JVM(Java  ---          虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出           现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。          这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定错            误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在 应用程序的控制和处理能力之 外 ,而且绝大多数是程序运行时不          允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在Java中,         

异常处理、抛出异常

筅森魡賤 提交于 2019-12-19 05:26:44
一、异常处理机制 Java 应用程序中,异常处理机制为: 抛出异常,捕捉异常。 抛出异常 : 当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。 捕获异常 :在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器( exception handler )。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适 的异常处理器,则运行时系统终止。同时,意味着 Java 程序的终止。 二、捕获异常 try...catch...finally.. try { // 可能会发生异常的程序代码 } catch (xxxException e1 { // 捕获并处理 try 抛出的异常类型 Type1 } catch (xxxException e2) { // 捕获并处理 try 抛出的异常类型 Type2 } ..... finally { // 无论是否发生异常,都将执行的语句块 } 综上所述: try : 该代码块中编写可能产生异常的代码。 c atch :

Java异常处理机制以及try-catch-finally-return执行顺序

左心房为你撑大大i 提交于 2019-12-19 03:52:35
一,简单描述: 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述。 二,JAVA中用2种方法处理异常:   1.在发生异常的地方直接处理;   2.将异常抛给调用者,让调用者处理。 三,JAVA异常可分为3种:   (1)检查性异常:java.lang.Exception   (2)运行期异常:java.lang.RuntimeException   (3)错误:java.lang.Error   顶层是java.lang.Throwable类,检查性异常,运行期异常,错误都是这个类的子孙类。   java.lang.Exception和java.lang.Error继承自java.lang.Throwable,而java.lang.RuntimeException继承自java.lang.Exception. 检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。   运行期异常------这意味着程序存在bug,如数组越界

python-----异常处理

梦想与她 提交于 2019-12-18 22:12:48
一、什么是异常 异常就是程序运行时发生的错误信号(在程序出现错误时,会产生一个异常,若程序没有处理它,则会抛出该异常,程序也会随之终止),在python中,错误触发的异常如下: 1 # _*_ encoding:utf-8 _*_ 2 __author__ = 'listen' 3 __date__ = '2018/12/9 8:03' 4 name 分为三个部分:追踪信息traceback 异常类型NameError 异常值:类型后面的信息 错误分为两种: 语法错误和逻辑错误 语法错误 : 1 if 2 print('nihao' 3 def test: 4 pass 5 class Foo 6 pass 本身就有错 逻辑错误: 1 # a=5/0 2 # print(a) #ZeroDivisionError: division by zero 3 4 # for i in 5: 5 # print(i) #TypeError: 'int' object is not iterable 6 7 # aaa #NameError: name 'aaa' is not defined 8 9 # l=[] 10 # l[2] #IndexError: list index out of range 11 12 # dic={} 13 # dic['name'] #KeyError:

07_异常处理————随堂练习

て烟熏妆下的殇ゞ 提交于 2019-12-18 20:51:30
1、判断程序的输出结果 public class ReturnExceptionDemo { static void methodA() { try { System.out.println("进入方法A"); throw new RuntimeException("制造异常"); } finally { System.out.println("用A方法的finally"); } } static void methodB() { try { System.out.println("进入方法B"); return; } finally { System.out.println("调用B方法的finally"); } } public static void main(String[] args) { try { methodA(); } catch (Exception e) { System.out.println(e.getMessage()); } methodB(); } } 2、编写应用程序EcmDef.java,接收命令行的两个参数,要求不能输入负数,计算两数相除。 要求: 数据类型不一致 (NumberFormatException) 缺少命令行参数 (ArrayIndexOutOfBoundsException、 除0(ArithmeticException

07_异常处理

风格不统一 提交于 2019-12-18 20:33:30
07_异常处理 一、异常的分类: 二、常见异常: 1.运行时异常: 2.编译期异常: 三、异常的处理机制: 1、try-catch-finally(抓) 异常中常用的方法: 注意: 2.throws(抛) 四、手动抛出异常(throw) 五、总结:异常处理5个关键字 六、本节随堂练习链接: 一、异常的分类: 大的方面:Error 、 Exception 1.Error: 这种错误 我们一般不处理 public static void main(String[] args) { int[] arr = new int[1000000000]; } (内存溢出错误) 2.Exception :才是我们处理的重点: 编译期异常:在编译期间发生的异常(checked Exception) 运行时异常:在编译期无法知道 直到程序运行时才发生的异常 称为运行时异常(unchecked Exception) 1.运行时异常 是指编译器不要求强制处置的异常。一般是指编程时的逻辑错误,是程序 员应该积极避免其出现的异常。 java.lang.RuntimeException 类及它的子 类都是运行时异常。 对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对 程序的可读性和运行效率产生影响。 2.编译时异常 是指编译器要求必须处置的异常。即程序在运行时由于外界因素造成的一 般性异常。

【翻译】ASP.NET WEB API异常处理

不问归期 提交于 2019-12-18 16:41:09
当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的数据 则返回了错误码为404的错误 (页面未找到) public Product GetProduct(int id) { Product item = repository.Get(id); if (item == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } return item; } 如果需要进一步自定义错误消息的内容 可以通过如下方法来完成 public Product GetProduct(int id) { Product item = repository.Get(id); if (item == null) { var resp = new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent(string.Format("No product with ID = {0}", id)), ReasonPhrase = "Product

python异常处理(基础)

允我心安 提交于 2019-12-18 15:06:27
   之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充。 http://www.cnblogs.com/fnng/archive/2013/04/28/3048356.html python shell >>> open('abc.txt','r') Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: 'abc.txt'   打开一个不存在的文件 abc.txt 文件,当系统找不到 abc.txt 文件时,就会抛出给我们一个 IOError类型的错误,No such file or directory: abc.txt (没有 abc.txt 这样的文件或目录) Try...except...   假如,我们已经知道这种类型的错误,那么就可以通过一个异常扑捉来扑捉这个错误。我们可以通过 try...except 来接收这个错误。打开文件写入: try: open("abc.txt",'r') except IOError: pass   再来运行程序就会看不到任何错误,因为我们用 except 接收了这个 IOError 错误。 pass