异常处理

课堂作业07异常处理

Deadly 提交于 2020-02-21 23:58:37
一、动手动脑 1、请尝试解释一下奇怪的现象。 代码执行时不发生异常。 jvm在处理浮点数时,生成的是ddiv字节码指令,i/0,0转化为浮点数0.0,而0.0是double类型的,并不精确,所以不会抛出异常。 jvm在处理整数时,生成的是idiv字节码指令,整数除0就是除0,会抛出异常。 第一个程序没有执行finally? finally 块必须与 try 或 try/catch 块配合使用。因为没有执行try,所以不会执行finally,异常是系统捕获的,try并没有抛出。 此外,不可能退出 try 块而不执行其 finally 块。如果 finally 块存在,则它总会执行。 (无论从那点看,这个陈述都是正确的。有一种方法可以退出 try 块而不执行 finally 块。如果代码在 try 内部执行一条 System.exit(0); 语句, 则应用程序终止而不会执行 finally 执行。另一方面,如果您在 try 块执行期间拨掉电源,finally 也不会执行。) 2.多层的异常捕获 catchwho.java catchwho2.java 3.EmbedFinally.java 总结try catch finally 1)try抛出一个异常之后,程序会跳出try,不再执行try后边的语句,开始对catch进行匹配,处理异常; 2)try嵌套中

asp.net中的异常处理

时间秒杀一切 提交于 2020-02-21 12:10:20
异常处理是系统开发中的一个重要环节。好的异常处理流程,可以构建稳定的、可靠的系统,并且有很好的用户体验。而差的异常处理,可能造成系统的崩溃、带来安全隐患。有关异常处理的重要性,就不再赘述,下面还是叙述一下我对使用asp.net开发Web应用中异常处理的一些想法。 如果需要对异常进行分类,从异常处理的角度来说,应该只有两类: 可处理的异常 未处理异常 从字面的含义理解,“可处理的异常”就是开发人员可以预期的,并有手段进行处理的异常;而“未处理异常”是在开发过程中不能预期的异常。 在对一个异常进行分类时,需要根据不同的异常类型、不同的时间、不同的代码、甚至于不同的开发人员等因素综合考虑,不能一概而论。例如一个写文件的操作,可能会引发FileNotFoundException,如果说方法的调用者预期到了这种异常,他就可以针对这种异常编写相应的处理代码(例如创建一个新的文件),然后在继续操作。在这种情况下,FileNotFoundException就是一个“可处理的异常”。而同样的方法,不同的调用者没有预期到会出现此异常,也没有针对异常编写相应的处理代码,那么这个异常就会成为系统运行的一个不稳定的因素,这时,FileNotFoundException就是“未处理异常”。 “应用程序应该只处理自己能够理解的异常” ——这是《.net设计规范》一书中提及的一段话,被我奉为异常处理的一个原则。

Java零基础入门之常用工具

允我心安 提交于 2020-02-21 05:15:42
Java异常 什么是异常? 在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。 throwable是所有异常的根类,异常分为两种异常exception和error Error是程序中无法处理的错误,表示应用程序中比较严重的问题,分别有虚拟机错误(VirtualMachineError)内存溢出(OutOfMemoryError)线程死锁(ThreadDeath); Exception是程序本身可以处理的异常。异常处理通常指针对这种异常的处理。 Exception异常由分为两种:非检查异常和检查异常 非检查异常:RuntimeException 包括空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOfBoundsException)、算数异常(ArithmeticException)、类型转换异常(ClassCastException)等,这类异常产生频率较高,产生时可以由程序处理或者抛给(throw)jvm处理,例如上面的例子就是抛给了jvm处理,jvm把程序中断执行,并把错误信息输出到终端上。 检查异常:IO异常(IOException)、SQL异常(SQLException)等,此类异常必须由程序员手动处理, 否则不通过编译。 如何处理异常? 抛出异常---捕获异常--处理异常 捕获异常

ASP.NET MVC自定义异常处理

空扰寡人 提交于 2020-02-20 01:38:34
1.自定义异常处理过滤器类文件 新建MyExceptionAttribute.cs异常处理类文件 MyExceptionAttribute.cs代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace WebApp.Models { public class MyExceptionAttribute : HandleErrorAttribute { public static Queue<Exception> exceptionQueue = new Queue<Exception>(); //异常处理队列对象 /// <summary> /// 控制器方法中出现异常,会调用该方法捕获异常 /// </summary> /// <param name="filterContext"></param> public override void OnException(ExceptionContext filterContext) { exceptionQueue.Enqueue(filterContext.Exception);//将捕获的异常信息写到队列中 filterContext

多线程的异常处理

陌路散爱 提交于 2020-02-19 21:42:08
原则:线程都不应该抛出未捕获的exception ,也就是说各个线程需要自己把自己的checked exception处理掉 。 话不多说,直接看代码      static void Main(string[] args) {       //第一个会抛出异常的线程(但这个线程方法内部作了异常捕获和处理)【正确的作法】 var t = new Thread(FaultyThread); t.Start(); t.Join(); try {           //第二个会抛出异常的线程(这个线程方法内部没作异常捕获和处理)【错误的作法】  t = new Thread(BadFaultyThread); t.Start(); } catch (Exception ex) {          //代码并不会运行到这里,也就是说并不能捕获到线程内部的异常 Console.WriteLine("We won't get here!"); } Console.Read(); } static void BadFaultyThread() { Console.WriteLine("Starting a faulty thread..."); Thread.Sleep(TimeSpan.FromSeconds(2)); throw new Exception("Boom!"); }

Python基础-异常处理

徘徊边缘 提交于 2020-02-19 02:29:11
一 错误和异常 1.1 程序中难免出现错误,而错误分成两种 1.1 语法错误 #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 1.2 逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 1.2 什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 1.3 python中的异常种类 l=['egon','aa'] l[3] IndexError dic={'name':'egon'} dic['age'] KeyError s='hello' int(s) ValueError 二 异常处理 2.1 什么是异常 异常发生之后, 异常之后的代码就不执行了 2.1 什么是异常处理 异常发生之后, 异常之后的代码就不执行了 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) 如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理 2.2 为何要进行异常处理 python解析器去执行程序,检测到了一个错误时,触发异常

【小甲鱼Python】异常处理:你不可能总是对的1&&课后作业

半腔热情 提交于 2020-02-18 00:45:17
测试题: 版权属于: bbs.fishc.com ~8i<apfRzuB5)=XVcT6eW9j^b 0. 结合你自身的编程经验,总结下异常处理机制的重要性? 答: 由于环境的不确定性和用户操作的不可以预知性都可能导致程序出现各种问题,因此异常机制最重要的无非就是:增强程序的健壮性和用户体验,尽可能的捕获所有预知的异常并写好处理的代码,当异常出现的时候,程序自动消化并恢复正常(不至于崩溃)。 >[ s&a) c%:IhXH5`xFQ|R"O]WqvL39,@umnJ 以下题目可以参考( http://bbs.fishc.com/thread-45814-1-1.html ),但要求不使用IDLE直接获得答案。 sF.fx P%i1'UQvM =j5r786F{SC-4RY,kt 1. 请问以下代码是否会产生异常,如果会的话,请写出异常的名称: .oC2 >>> my_list = [1, 2, 3, 4,,] 答:SyntaxError: invalid syntax q.;_$9r2JcUV[yFlRahLg%1TP~jEe 2. 请问以下代码是否会产生异常,如果会的话,请写出异常的名称: y<L#Qt4vI >>> my_list = [1, 2, 3, 4, 5] >>> print(my_list[len(my_list)]) 答:IndexError: list

IOS应用之一--异常处理(UncaughtExceptionHandler)

佐手、 提交于 2020-02-17 18:36:51
使用原因 iOS开发中我们会遇到程序抛出异常退出的情况,如果是在调试的过程中,异常的信息是一目了然,但是如果是在已经发布的程序中,获取异常的信息有时候是比较困难的。 好处与缺点 iOS提供了异常发生的处理API,我们在程序启动的时候可以添加这样的Handler,这样的程序发生异常的时候就可以对这一部分的信息进行必要的处理,适时的反馈给开发者。 不足的地方是,并不是所有的程序崩溃都是由于发生可以捕捉的异常的,有些时候是因为内存等一些其他的错误导致程序的崩溃,这样的信息是不在这里体现的。 常用的处理方式 第一种方式:作基本的操作,可以添加和获取Handler,捕获到异常后将信息写入到app的Documens下的Exception .txt中。 第二种方式:比如可以在程序下一次起来的时候读取这个异常文件发生到服务端 第三种方式:或者直接就是在处理代码中用openurl的方式(mailto:)调用发送邮件的方式,将异常信息直接变成邮件发送到指定地址, 其实还有很多的处理的办法。 实例 : #pragma mark 代理类中的写法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [window

Java 中的异常和处理详解

孤街醉人 提交于 2020-02-17 07:55:49
简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。 Java提供了更加优秀的解决办法:异常处理机制。 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。 Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。 Java异常的分类和类结构图 Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。 Throwable又派生出Error类和Exception类。 错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。 异常

Java 中的异常

本秂侑毒 提交于 2020-02-17 07:47:44
简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。 Java有独特的异常处理机制。 总体上我们根据Javac对异常的处理要求,将异常类分为2类。 Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常,如果我们要定义其它异常的话我们需要通过throw来手动抛出一个自定义的异常。 老师说过:检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。 非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try