• 首页>生活 > 教育
  • 处置异常情况说明

    1.java中的异常处理说明

    Java异常学习心得 本文重在Java中异常机制的一些概念。

    写本文的目的在于方便我很长时间后若是忘了这些东西可以通过这片文章迅速回忆起来。 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理。

    具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。

    1.2 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在一起;由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。

    1.3 异常处理的流程 1.3.1 遇到错误,方法立即结束,并不返回一个值;同时,抛出一个异常对象 1.3.2 调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常的异常处理器,并执行其中的代码 2 异常的分类 2.1 异常的分类 2.1.1 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。 2.1.2 Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

    2.2 每个类型的异常的特点 2.2.1 Error体系 Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。

    如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。

    2.2.2 Exception体系 Exception体系包括RuntimeException体系和其他非RuntimeException的体系 2.2.2.1 RuntimeException RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。

    例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。 2.2.2.2 其他(IOException等等) 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

    2.3 与C++异常分类的不同 2.3.1 其实,Java中RuntimeException这个类名起的并不恰当,因为任何异常都是运行时出现的。(在编译时出现的错误并不是异常,换句话说,异常就是为了解决程序运行时出现的的错误)。

    2.3.2 C++中logic_error与Java中的RuntimeException是等价的,而runtime_error与Java中非RuntimeException类型的异常是等价的。 3 异常的使用方法 3.1 声明方法抛出异常 3.1.1 语法:throws(略) 3.1.2 为什么要声明方法抛出异常? 方法是否抛出异常与方法返回值的类型一样重要。

    假设方法抛出异常确没有声明该方法将抛出异常,那么客户程序员可以调用这个方法而且不用编写处理异常的代码。那么,一旦出现异常,那么这个异常就没有合适的异常控制器来解决。

    3.1.3 为什么抛出的异常一定是已检查异常? RuntimeException与Error可以在任何代码中产生,它们不需要由程序员显示的抛出,一旦出现错误,那么相应的异常会被自动抛出。而已检查异常是由程序员抛出的,这分为两种情况:客户程序员调用会抛出异常的库函数(库函数的异常由库程序员抛出);客户程序员自己使用throw语句抛出异常。

    遇到Error,程序员一般是无能为力的;遇到RuntimeException,那么一定是程序存在逻辑错误,要对程序进行修改(相当于调试的一种方法);只有已检查异常才是程序员所关心的,程序应该且仅应该抛出或处理已检查异常。 3.1.4 注意:覆盖父类某方法的子类方法不能抛出比父类方法更多的异常,所以,有时设计父类的方法时会声明抛出异常,但实际的实现方法的代码却并不抛出异常,这样做的目的就是为了方便子类方法覆盖父类方法时可以抛出异常。

    3.2 如何抛出异常 3.2.1 语法:throw(略) 3.2.2 抛出什么异常? 对于一个异常对象,真正有用的信息时异常的对象类型,而异常对象本身毫无意义。比如一个异常对象的类型是ClassCastException,那么这个类名就是唯一有用的信息。

    所以,在选择抛出什么异常时,最关键的就是选择异常的类名能够明确说明异常情况的类。 3.2.3 异常对象通常有两种构造函数:一种是无参数的构造函数;另一种是带一个字符串的构造函数,这个字符串将作为这个异常对象除了类型名以外的额外说明。

    3.2.4 创建自己的异常:当Java内置的异常都不能明确的说明异常情况的时候,需要创建自己的异常。需要注意的是,唯一有用的就是类型名这个信息,所以不要在异常类的设计上花费精力。

    3.3 捕获异常 如果一个异常没有被处理,那么,对于一个非图形界面的程序而言,该程序会被中止并输出异常信息;对于一个图形界面程序,也会输出异常的信息,但是程序并不中止,而是返回用Ы缑娲?硌?分小?BR> 3.3.1 语法:try、catch和finally(。

    2.异常处理的处理方法

    扩展 php 内置的异常处理类 用户可以用自定义的异常处理类来扩展 php 内置的异常处理类。

    以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的。译者注:以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。

    内置的异常处理类如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用 parent::__construct() 来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载 __toString() 并自定义输出的样式。

    扩展 php 内置的异常处理类 code }] : {$this->message }/n ; } public function customFunction () { echo A Custom function for this type of exception/n ; }} class TestException { public $var ; const THROW_NONE = 0 ; const THROW_CUSTOM = 1 ; const THROW_DEFAULT = 2 ; function __construct( $avalue = self :: THROW_NONE ) { switch ( $avalue ) { case self :: THROW_CUSTOM : // 抛出自定义异常 throw new MyException ( '1 is an invalid parameter' 5 ); break; case self:: THROW_DEFAULT: // 抛出默认的异常 throw new Exception ( '2 isnt allowed as a parameter' 6 ); break; default: // 没有异常的情况下,创建一个对象 $this var = $avalue ; break; } }} 你觉得自己是一个Java专家吗?北京海淀甲骨文学习中心帮你全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter out = 。 java.sql.Connection conn = 。

    try { // ⑸ Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(select uid, name from user); while (rs.next()) { out.println(ID: + rs.getString(uid) // ⑹ +,姓名: + rs.getString(name)); } conn.close(); // ⑶ out.close(); } catch(Exception ex) // ⑵ { ex.printStackTrace(); //⑴,⑷ }作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。

    本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为“反例”(anti-pattern)的违背优秀编码规范的常见坏习惯,帮助读者熟悉这些典型的反面例子,从而能够在实际工作中敏锐地察觉和避免这些问题。

    反例之一:丢弃异常代码:12行-15行。这段代码捕获了异常却不作任何处理,可以算得上Java编程中的杀手。

    从问题出现的频繁程度和祸害程度来看,它也许可以和C/C++程序的一个恶名远播的问题相提并论??不检查缓冲区是否已满。如果你看到了这种丢弃(而不是抛出)异常的情况,可以百分之九十九地肯定代码存在问题(在极少数情况下,这段代码有存在的理由,但最好加上完整的注释,以免引起别人误解)。

    这段代码的错误在于,异常(几乎)总是意味着某些事情不对劲了,或者说至少发生了某些不寻常的事情,我们不应该对程序发出的求救信号保持沉默和无动于衷。调用一下printStackTrace算不上“处理异常”。

    不错,调用printStackTrace对调试程序有帮助,但程序调试阶段结束之后,printStackTrace就不应再在异常处理模块中担负主要责任了。丢弃异常的情形非常普遍。

    打开JDK的ThreadDeath类的文档,可以看到下面这段说明:“特别地,虽然出现ThreadDeath是一种‘正常的情形’,但ThreadDeath类是Error而不是Exception的子类,因为许多应用会捕获所有的Exception然后丢弃它不再理睬。”这段话的意思是,虽然ThreadDeath代表的是一种普通的问题,但鉴于许多应用会试图捕获所有异常然后不予以适当的处理,所以JDK把ThreadDeath定义成了Error的子类,因为Error类代表的是一般的应用不应该去捕获的严重问题。

    可见,丢弃异常这一坏习惯是如此常见,它甚至已经影响到了Java本身的设计。那么,应该怎样改正呢?主要有四个选择:1、处理异常。

    针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“处理好了异常”。

    2、重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常也不失为一种选择。

    3、把该异常转换成另一种异常。大多数情况下,这是指把一个低级的异常转换成应用级的异常(其含义更容易被用户了解的异常)。

    4、不要捕获异常。结论一:既然捕获了异常,就要对它进行适当的处理。

    不要捕获异常之后又把它丢弃,不予理睬。反例之二:不指定具体的异常代码:12行。

    许多时候人们会被这样一种“美妙的”想法吸引:用一个catch语句捕获所有的异常。最常见的情形就是使用catch(Exception ex)语句。

    但实际上,在绝大多数情况下,这种做法不值得提倡。为什么呢?要理解其原因,我们必须回顾一下catch语句的用途。

    catch语句表示我们预期会出现某种异常,而且希望能够处理该异常。异常类的作用就是告诉Java编译器我们想要处理的是哪一种异常。

    由于绝大多数异常都直接或间接从java.lang.Exception派生,catch(Exception ex)就相。

    3.异常情况报告和纠偏制度

    1 目的

    防疫卫生体系发生偏离时,及时采取纠正行动,确保体系有效运行。

    2 职责

    2.1 企业负责人负责纠正措施的决策。

    2.2 厂检员负责体系运行过程中的纠正措施的管理与实施。

    3 异常情况识别

    a) 原料有毒有害物报告显示不符合要求

    b) 成品有毒有害物超标

    c) 成品检验不合格

    d) 原料携带有害生物

    e) 厂区疫情

    4 异常情况处理

    发生上述异常情况,应填写《异常情况处理单》,由相关方采取对应的纠偏措施,详见《异常情况纠偏处理预案》。其他不可预见的情况,则由总经理组织确定、实施纠偏措施。

    对于在加工,贮存管理中发现的不合格,如产品个别不合格等,则按照《不合格品控制与召回制度》执行。

    5纠正措施的管理

    根据异常情况发生的原因,必要时采取适当的纠正措施防止再次发生,记录于《异常情况处理单》

    纠正措施的内容应包括:

    a) 评审不合格(包括顾客抱怨);

    b) 确定不合格的原因;

    c) 评价采取措施的需求以确保不合格不再发生;

    d) 确定和实施所需的措施;

    e) 记录所采取纠正措施的结果;

    f) 评审采取的纠正措施,以确保其有效。

    6 相关记录

    异常情况处理单

    纠正与预防措施处理单

    异 常 情 况 纠 偏 处 理 预 案

    异常情况 通知 纠 偏 处 理 预 案

    原辅料有毒有害物

    超标 副总 原料尚未使用的,立即隔离封存,着手办理退货手续。若投入使用,则:

    a) 由副总组织人员识别用该原料加工的产品,隔离存放

    b) 由厂检员组织对成品进行检测,评估有毒有害物超标情况

    c) 如已超标,本批成品做报废处理。

    d) 如未超标,加大送样检测量,了解指标趋势,确定报废/让步放行。

    成品有毒有害物超标 副总 a) 加大送样检测量,了解指标趋势

    b) 已发货,就地销毁/开展产品回收,必要时召回相关批次产品

    c) 未发货,分析原因,根据原因分析结果,对成品做不同处理

    成品检验(外观,包装)不合格 副总 a) 针对不合格内容,识别可能不合格的产品。

    b) 识别潜在不合格产品,逐个评估是否合格。

    原料携带有害生物

    (成规模) 副总 原料尚未使用的,立即隔离封存,着手办理退货手续,并对存放场所进行药物喷洒;若有投入使用,则:

    a) 暂停生产

    b) 由副总组织人员识别用该原料加工的产品,隔离存放,逐个检查

    c) 生产加工贮存各环节进行全面的杀虫药物喷洒

    d) 厂检员评估喷洒效果后,再决定是否重新开始生产。

    厂区内部发现疫情 总经理 a) 暂停生产

    b) 由副总组织人员对未包装产品逐个检查

    c) 生产加工贮存各环节进行全面的杀虫药物喷洒

    d) 厂检员评估喷洒效果后,再决定是否重新开始生产。

    表格贴上去就变样了,你自己去组织吧

    4.怎样写一份品质异常处理单胶袋内的,要填写什么异常说明啦,临时对

    先声明以下不是我个人处理质量事件的风格 但是因为面对这类无谓要求 不能不给予帮助无奈回应 以免受到伤害 因为胶袋做薄了一点点: 品质异常处理单内容如下 异常说明: 因为气温转热而热涨冷缩,导致胶袋冷缩薄了 临时对策: 调整室内温度,以免过度热涨冷缩 决定和查证根本原因: 因为夏季气温转热, 今年特别酷热。

    长期有效措施: 机器和人员注意气温变化调整设备和室温。 计划及实施长期改善措施: 依四季变化调整设备和室温。

    终止再发对策: 重新计算塑料磅重,增加厚度, 重新报价。 谨供参考 有问题继续讨论。

    5.解除工商经营异常需要哪些证明材料

    根据不同经营异常情形移出流程如下:

    四种情形会被列入经营异常名录:

    1、因未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的;列入经营异常名录。

    2、因通过登记的住所或者经营场所无法联系的;列入经营异常名录。

    3、因未在工商行政管理部门依照《企业信息公示暂行条例》第十条规定责令的期限内公示有关企业信息的;列入经营异常名录。

    4、因公示企业信息隐瞒真实情况、弄虚作假的;列入经营异常名录。

    移出经营异常名录流程:

    一、进入携创网(原中国工商注册网)。

    二、进入后选择您企业所属的城市或者省份站点。

    三、进入工商企业年报系统。

    四、进入移出经营异常名录指南。

    五、查看列入异常原因,有四种异常,选择相应的。

    六、逾期未申报的补报未按时申报年份的年度报告,地址异常等其他异常原因处理办法上面都有说明。

    七、下载《企业移出经营异常名录申请表》。

    八、带上《企业移出经营异常名录申请表》和移出经营异常名录证明材料,需要什么证明材料上面都有说明,不同异常原因的所需材料都不同。

    九、带上以上资料到企业所属工商局大厅提交申请。等待审核。

    十、工商局自收到资料后5个工作日内作出移出决定,恢复正常记载状态。予以受理的,应当在20个工作日内核实,并将核实结果书面告知申请人;不予受理的,将不予受理的理由书面告知申请人。

    被列入经营异常名录有什么影响:

    被列入经营异常名录:今后在、政府采购、工程招投标、国有土地出让、授予荣誉称号、依法予以限制或者禁入。银行信贷、合同签订、海关通关、企业外籍人员工作证件等、、将受到信用约束机制的影响。

    提示该企业已列入经营异常名录4种不同原因申请移出异常名录:

    一、未按规报送年度报告的企业,可以在补报未报年份的年度报告并公示后,携带资料(见表格底部说明)前往企业所属工商局申请移出经营异常名录,工商行政管理部门自收到申请之日起5个工作日内作出移出决定,恢复正常记载状态。

    二、企业依法办理住所或者经营场所变更登记,或者提出通过登记的住所或者经营场所可以重新取得联系,申请恢复正常记载状态的,携创网工商行政管理部门自核实之日起5日内作出移出决定,恢复正常记载状态。

    三、未按规定履行即时信息公示义务的企业,申请恢复正常记载状态的,应当先履行其信息公示的义务,工商行政管理部门自公示之日起5个工作日内作出移出决定,恢复正常记载状态。

    四、公示信息隐瞒真实情况、弄虚作假的企业更正其公示的信息后,可以向工商行政管理部门申请移出经营异常名录,工商行政管理部门应当自查实之日起5个工作日内作出移出决定。

    根据《企业经营异常名录管理暂行办法》的有关规定,企业对被列入经营异常名录有异议的,可以自公示之日起30日内向作出决定的工商行政管理部门提出书面申请并提交相关证明材料,工商行政管理部门应当在5个工作日内决定是否受理。予以受理的,应当在20个工作日内核实,并将核实结果书面告知申请人;不予受理的,将不予受理的理由书面告知申请人。

    处置异常情况说明

    发表评论

    登录后才能评论