文档库 最新最全的文档下载
当前位置:文档库 › C++实现事件机制

C++实现事件机制

C++实现事件机制
C++实现事件机制

C++实现事件机制

委托是一种很实用的设计方法,一个模块可以将某些事情委托给其他实体去做,而对于模块本身不需要知道受委托的实体是什么,它只知道这个实体遵循某种接口规范。回调函数可以认为是一种委托,它在Windows编程中起了非常重要的作用。

委托的一个重要应用是事件机制,假设有类A负责加载数据,类B用于实时显示A的加载进度,那么A必须向B引发一些事件,以表明它的加载进度。要实现这种机制可以用观察者模式,Java即使用观察者模式来实现事件监听的。Delphi使用了类似回调函数的技术来实现事件,这样也有一些好处,就是简单高效,对于一些轻量级的应用还是非常合适的。

C++如何实现事件,当然可以用观察者模式来实现,不过这里要介绍另一种方法,就是用成员函数指针,这种方法更类似于Delphi的事件,优点是简单高效。

下面是我写的两个源文件,对通用事件提供了支持,其中涉及到成员函数指针的知识,我就不班门弄斧了,直接给就出源代码如下:

EventUtils.h

#ifndef EVENTUTILS_H_

#define EVENTUTILS_H_

// 用于欺骗编译器,传递This指针

class CMemFunObj

{

};

// 通用函数类型

typedef void (CMemFunObj:: *PFNMEMFUN)();

// 成员函数结构

typedef struct tagMEMBERFUN {

CMemFunObj *Self;

PFNMEMFUN pfnAddr;

} MEMBERFUN, *PMEMBERFUN;

// 生成成员函数结构

MEMBERFUN MakeMemberFun(CMemFunObj *Self, PFNMEMFUN pfnAddr);

// 宏:生成成员函数结构

#define MAKEMEMFUN(Self, pfnAddr) \

MakeMemberFun((CMemFunObj*)Self, (PFNMEMFUN)pfnAddr)

// 宏:回调成员函数,FunType为具体函数类型,MemFun为成员函数结构

#define CALLMEMFUN(FunType, MemFun) \

(MemFun.Self->*(FunType)MemFun.pfnAddr)

// 宏:判断成员函数结构是否有值

#define ISMEMFUNASSIGNED(MemFun) \

(MemFun.Self != NULL) && (MemFun.pfnAddr != NULL)

#endif // EVENTUTILS_H_

EventUtils.cpp

#include "EventUtils.h"

// 生成成员函数结构

MEMBERFUN MakeMemberFun(CMemFunObj *Self, PFNMEMFUN pfnAddr)

{

MEMBERFUN Memfun;

Memfun.pfnAddr = pfnAddr;

Memfun.Self = Self;

return Memfun;

}

其中比较有意思的是用CMemFunObj来做对象绑定,这个类会欺骗编译器,使编译将This指针传进成员函数;MEMBERFUN是成员函数结构,一个成员函数要成功调用必须有两个要素,一个是绑定的对象,一个是函数地址,这就是MEMBERFUN的内容。

下面看看如何用这个单元,有一个CRunner类,提供一个Run方法,我们要实现的是监控Run的进度。

首先声明CRunner,声明进度事件类型,以及在CRunner保存一个事件类型的成员:

#ifndef RUNNER_H_

#define RUNNER_H_

#include "EventUtils.h"

// 进度事件类型

typedef void (CMemFunObj:: *RUNPROCESS)(int nPercent);

class CRunner

{

public:

CRunner();

virtual ~CRunner();

// 设置事件结构

void SetOnProcess(MEMBERFUN OnRunProcess);

// 开始运行

void Run();

private:

MEMBERFUN m_OnRunProcess;

};

#endif // RUNNER_H_

接着实现CRunner,并看看Run如何调用事件:

#include "Runner.h"

#include

#include

CRunner::CRunner()

{

memset(&m_OnRunProcess, 0, sizeof(m_OnRunProcess));

}

CRunner::~CRunner(){}

void CRunner::SetOnProcess( MEMBERFUN OnRunProcess )

{

m_OnRunProcess = OnRunProcess;

}

void CRunner::Run()

{

int nTime = 0;

while ((nTime++) < 100)

{

Sleep(10);

if (ISMEMFUNASSIGNED(m_OnRunProcess))

CALLMEMFUN(RUNPROCESS, m_OnRunProcess)(nTime);

}

}

Run函数用ISMEMFUNASSIGNED宏判断m_OnRunProcess是否被赋值,如果有,则用CALLMEMFUN宏来调用具体的事件。关于这几个宏,可以参考EventUtils.h

CRunner支持事件之后,来看看事件如何被接收:

#include "EventUtils.h"

#include "Runner.h"

#include

using namespace std;

class EventSink

{

public:

void RunProcess(int Percent)

{

cout<

}

};

int main()

{

EventSink es;

CRunner R;

R.SetOnProcess(MAKEMEMFUN(&es, es.RunProcess));

R.Run();

return 0;

}

MAKEMEMFUN用于合成一个成员函数结构体,调用R.SetOnProcess之后,es便能够监听CRunner的进度事件。

使用这种技术来实现事件机制应该说是通用的,你可以整合到如MFC这类应用程序框架中。该技术的优点是高效,但缺点也很明显,就是只支持单点事件,如果要实现多点事件则要做更多的工作。

ActionEvent事件处理机制

类 ActionEvent https://www.wendangku.net/doc/e414908002.html,ng.Object java.util.EventObject java.awt.AWTEvent java.awt.event.ActionEvent 所有已实现的接口: Serializable public class ActionEvent extends AWTEvent 指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如Button)生成此高级别事件。事件被传递给每一个ActionListener对象,这些对象是使用组件的addActionListener方法注册的,用以接收这类事件。 注:要使用键盘在Button上触发ActionEvent,请使用空格键。 实现ActionListener接口的对象在发生事件时获取此ActionEvent。因此,侦听器不必处理个别鼠标移动和鼠标单击的细节,而是可以处理像“按下按钮”这样的“有意义”(语义)事件。 从以下版本开始: 1.1 另请参见: ActionListener, Tutorial: Java 1.1 Event Model, 序列化表格 字段摘要 static int ACTION_FIRST 用于标识动作事件的 ID 序列的起始编号。 static int ACTION_LAST 用于标识动作事件的 ID 序列的结束编号。 static int ACTION_PERFORMED 此事件 id 指示发生了有意义的动作。 static int ALT_MASK alt 修饰符。 static int CTRL_MASK Ctrl 修饰符。 static int META_MASK

AWT事件处理模型

AWT事件处理模型

事件类别描述信息接口名方法ActionEvent 激活组件ActionListener actionPerformed(ActionEvent) ItemEvent 选择了某些项目ItemListener itemStateChanged(ItemEvent) MouseEvent 鼠标移动 MouseMotionListener mouseDragged(MouseEvent) mouseMoved(MouseEvent) 鼠标点击等MouseListener mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) KeyEvent 键盘输入KeyListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) FocusEvent 组件收到或失去焦 点 FocusListener focusGained(FocusEvent) focusLost(FocusEvent) AdjustmentEvent 移动了滚动条等组 件AdjustmentListener adjustmentValueChanged(AdjustmentEvent) ComponentEvent 对象移动缩放显示 隐藏等ComponentListener componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) WindowEvent 窗口收到窗口级事 件 WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) ContainerEvent 容器中增加删除了 组件ContainerListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent) TextEvent 文本字段或文本区TextListener textValueChanged(TextEvent)

程序设计异常处理机制

异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!Java 语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟踪异常!这是Java语言设计者的高明之处,也是Java语言中的一个难点,下面是我对Java异常知识的一个总结,也算是资源回收一下。 一、Java异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误https://www.wendangku.net/doc/e414908002.html,ng.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出https://www.wendangku.net/doc/e414908002.html,ng.ArithmeticException的异常。 有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。 天有不测风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。Java中的异常用对象来表示。Java对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。 异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。 异常的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。 异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。 Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下: try{ 程序代码 }catch(异常类型1 异常的变量名1){ 程序代码 }catch(异常类型2 异常的变量名2){ 程序代码 }finally{ 程序代码 } catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的,表示代

异常处理机制

异常的基本概念 异常是导致程序终止运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失。 在没有异常处理的语言中如果要回避异常,就必须使用大量的判断语句,配合所想到的错误状况来捕捉程序中所有可能发生的错误。 Java异常处理机制具有易于使用、可自行定义异常类、处理抛出的异常同时又不会降低程序运行的速度等优点。因而在java程序设计时应充分地利用java的异常处理机制,以增进程序的稳定性及效率。 当程序中加入了异常处理代码,所以当有异常发生后,整个程序并不会因为异常的产生而中断执行。而是在catch中处理完毕之后,程序正常的结束。 在整个java异常的结构中,实际上有两个最常用的类,分别为Exception和Error 这两个类全都是Throwable的子类。 Exception:一般表示的是程序中出现的问题,可以直接使用try……catch处理。 Error:一般值JVM错误,程序中无法处理。 Java异常处理机制。 在整个java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下: 1)一旦产生异常,则首先会产生一个异常类的实例化对象。 2)在try语句中对此异常对象进行捕捉。 3)产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功则执行catch语句中的代码。 异常处理 在定义一个方法时可以使用throws关键字声明,表示此方法不处理异常,而交给方法的调用处进行处理,在方法调用处不管是否有问题,都要使用try……catch块进行异常的捕获与处理。 如果在主方法中使用throws关键字,则程序出现问题后肯定交由jvm处理,将导致程序中断。 与throws关键字不同的是,throw关键字人为的抛出一个异常,抛出时直接抛出异常类的实例化对象即可。 Exception在程序中必须使用try……catch进行处理。RuntimeException可以不使用try……catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。(建议RuntimeException的子类也使用try……catch进行处理,否则产生的异常交给jvm处理会导致程序中断。) 继承关系: Exception》RuntimeException》lllegalArgumentException》NumberFormatException; 异常类必须继承于Exception 建议:继承Exception一般要添加全部父类型一样的构造器! class NameOrPwdException extends Exception { public NameOrPwdException() {

紧急事件应急处理制度

紧急事件应急处理制度 第一章总则 第一条为了加强公司对紧急事件的应急管理,建立快速反应和应急处置机制,最大程度降低紧急事件给公司造成的影响和损失,维护公司正常的生产经营秩序和企业稳定,特制定本制度。 第二条本制度所称“紧急事件”是指日常生产或生活中,不确定、不经常发生的,可能会对公司经营、生产状况产生影响的,需要采取应急处置措施予以应对的事件。 第三条公司应对紧急事件实行预防为主、预防与应急处置相结合的原则。 第二章紧急事件分类 第五条按照影响程度程度、影响范围等因素,公司需应对的紧急事件主要包括但不限于以下方面: 1、自然灾害、事故灾难、社会公共事件造成公司生产运行受到严重影响; 2、公司或个人因发生安全生产事故、交通事故、公共设施和设备事故等,造成公司生产业务受到严重影; 3、公司关键设备突发故障,影响了公司正常的生产和运营; 第三章机构设置 第六条公司对紧急事件的处置实行统一领导、统一组织、快速反应、协同应对。 第七条公司成立紧急事件应急处置工作领导小组(以下简称“应急领导小组”),由公司总经理担任组长、财务副总任副组长,成员由公司其他高级管理人员及相关职能部门负责人组成。 第八条应急领导小组是公司紧急事件处置工作的领导机构,统一领导公司紧急事件的应急处理,就相关重大问题作出决策和部署。应急领导小组的主要职责包括: (一)决定启动和终止突发事件处理系统; (二)拟定突发事件处理方案; (三)组织指挥突发事件处理工作; (四)负责决定并办理突发事件处理过程中的其他事项。 第四章预警和预防机制 第九条公司应当对可能引发突发事件的各种因素采取预防和控制措施,根据突发事件的监测结果对突发事件可能产生的危害程度进行评估,以便采取应对措施。 第十条公司各部门负责人作为突发事件的预警、预防工作的第一负责人,定期检查及汇报各部门有关情况,做到及时提示、提前控制,将事态控制在萌芽状态中。 第十一条公司相应岗位人员应当保持对各类事件发生的敏感度,收集整理并及时汇报可能威胁企业的重要信息,并对其转化为突发事件的可能性和危害性进行评估。 第十二条应急小组各成员电话保持24小时开机,试件突发后(10-15分钟内)当事人应首先向应急小组领导汇报突发事件信息,应当做到及时、客观、真实,不得迟报、谎报、瞒报、漏报;30分钟内向本部门领导汇报突发时间信息,同时对后续工作进行交接及安排。 第十三条报告信息包括突发事件的类别、起始时间、可能影响范围、应采取的措施等。 第五章应急处置 第十四条发生突发事件时,应急领导小组应当立即采取措施控制事态发展,组织开展应急处置工作,并根据各自职责和规定的权限启动相关应急措施,及时有效地进行先期处置,控制事态。 第十五条应急领导小组应当根据突发事件性质及事态严重程度,决定启动专项应急预案,并针对不同突发事件,成立相关的处置工作小组,及时开展处置工作。 第十六条突发事件结束后,应急领导小组应当尽快消除突发事件对公司造成的影响,并及时解除应急状态,恢复正常工作状态。同时,公司应当分析和总结经验,对突发事件的起因、性质、影响、责任、经验教训等问题进行调查评估,评价突发事件处理的效果。 第十七条公司各部门应当根据突发事件的变化和处置中发现的问题,及时修订应急预案,充实应急预案内容,提高应急预案的科学性和可操作性。

第八讲 AWT和事件监听

第八讲AWT和事件监听打印本页 1 基本概念 下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。 1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。常用的构件有: 按钮构件 项目选择构件:复选框(Checkbox)列表(List或Choice) 文本构件:文本框文本区 对话框构件:对话框文件对话框提示框帮助 菜单构件:弹出式菜单复选框菜单 1.2容器 容器是用来组织构件的单元。常用的容器有:面板、窗口。 1.3布局管理器: 布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。AWT提供了几种标准的布局管理器。 1.4事件监听 要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。 我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。 2 几个简单的构件和容器 标签(https://www.wendangku.net/doc/e414908002.html,bel) 标签用来显示文本。 演示(StarterApplet) 面板(java.awt.Panel) 面板是一个通用的容器,在上面可以放置各种构件。 我们经常用的Applet类,其实就是面板的一个子类 按钮(java.awt.Button) 按钮具有三维外型,当它们被激活时触发按钮事件,用户可以根据按钮事件,做出适当的反应,比如执行一系列操作等。 演示 3 事件 AWT有两种事件处理模型:一种是基于继承的模型,它在AWT1.1或以前的版本中使用,现在已经逐渐被淘汰;另一种是基于授权的事件模型。我们主要学习给予授权的事件模型。 授权事件模型的原理很简单:事件源激发事件、事件监听器监听事件,最后执行事件。可以通过调用addXYZListener(XYZListner)方法向构件注册监听器。把监听器加到构件中以后,如果构件激发相应类型的事件,

浅议Qt的事件处理机制

浅议Qt的事件处理机制 深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集。大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制。 在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. 接下来依次谈谈Qt中有谁来产生、分发、接受和处理事件: 1. 谁来产生事件:最容易想到的是我们的输入设备,比如键盘、鼠标产生的 keyPressEvent,keyReleaseEvent,mousePressEvent,mouseReleaseEvent事件(他们被封装成QMouseEvent和QKeyEvent),这些事件来自于底层的操作系统,它们以异步的形式通知Qt事件处理系统,后文会仔细道来。当然Qt自己也会产生很多事件,比如QObject::startTimer()会触发QTimerEvent. 用户的程序可还以自己定制事件。 2. 谁来接受和处理事件:答案是QObject。在Qt的内省机制剖析一文已经介绍QObject 类是整个Qt对象模型的心脏,事件处理机制是QObject三大职责(内存管理、内省(intropection)与事件处理制)之一。任何一个想要接受并处理事件的对象均须继承自QObject,可以选择重载QObject::event()函数或事件的处理权转给父类。

3. 谁来负责分发事件:对于non-GUI的Qt程序,是由QCoreApplication负责将QEvent分发给QObject的子类-Receiver. 对于Qt GUI程序,由QApplication来负责。 接下来,将通过对代码的解析来看看QT是利用event loop从事件队列中获取用户输入事件,又是如何将事件转义成QEvents,并分发给相应的QObject处理。 [cpp]view plainc opy 1.#include 2.#include "widget.h" 3.//Section 1 4.int main(int argc, char *argv[]) 5.{ 6. QApplication app(argc, argv); 7. Widget window; // Widget 继承自QWidget 8. window.show(); 9.return app.exec(); // 进入Qpplication事件循环,见section 2 10.} 11.// Section 2: 12.int QApplication::exec() 13.{ 14.//skip codes 15.//简单的交给QCoreApplication来处理事件循环=〉section 3 16.return QCoreApplication::exec(); 17.} 18.// Section 3 19.int QCoreApplication::exec() 20.{ 21.//得到当前Thread数据 22. QThreadData *threadData = self->d_func()->threadData; 23.if (threadData != QThreadData::current()) {

如何使用异常处理机制

如何使用异常处理机制 《PHP核心技术与最佳实践》第1章面向对象思想的核心概念,本章将就面向对象一些概念展开讨论,其中重点讨论PHP特色的面向对象的风格和语法,并通过相互借鉴和对比,使读者认识PHP自身的特点,尤其是和其他语言中不同的地方。本节为大家介绍如何使用异常处理机制。 1.6.1 如何使用异常处理机制(1) 异常的思想最早可以追溯到20世纪60年代,其在C++、Java中发扬光大,PHP则部分借鉴了这两种语言的异常处理机制。 PHP里的异常,是程序运行中不符合预期的情况及与正常流程不同的状况。一种不正常的情况,就是按照正常逻辑不该出错,但仍然出错的情况,这属于逻辑和业务流程的一种中断,而不是语法错误。PHP里的错误则属于自身问题,是一种非法语法或者环境问题导致的、让编译器无法通过检查甚至无法运行的情况。 在各种语言里,异常(exception)和错误(error)的概念是不一样的。在PHP里,遇到任何自身错误都会触发一个错误,而不是抛出异常(对于一些情况,会同时抛出异常和错误)。PHP一旦遇到非正常代码,通常都会触发错误,而不是抛出异常。在这个意义上,如果想使用异常处理不可预料的问题,是办不到的。比如,想在文件不存在且数据库连接打不开时触发异常,是不可行的。这在PHP里把它作为错误抛出,而不会作为异常自动捕获。 以经典的除零问题为例,如代码清单1-16所示。 代码清单1-16 exception.php 1.// exception.php 2.getMessage(); 9.$a=-1; 10.}

危机事件处理制度

危机事件处理制度 第一章总则 第一条为规范……股份有限公司(以下简称公司)的各类危机事件的处理程序,提高危机处理效率,明确危机处理的责任部门和责任人,特制定此制度。 第二条本制度适用于公司在生产、销售及运营管理中遇到的一切可能危及企业品牌形象,影响公司声誉和信誉的事件,此制度将作为处理原则存在。 第三条企业可能面临的危机事件形式多种多样,因此需要全体员工以高度的敏感性和对企业负责的态度,准确把握可能出现的危机,参照本制度的相关要求,高效处理,务必使影响或损失降到最低。 第二章危机事件概述 第四条公司可能面对的危机事件包括但并不限于以下类别,此类别仅作为公司员工判别是否存在危机的参考依据: (一)网络危机事件:即有可能通过微博、论坛、网站、邮件等各种网络平台传播企业的负面信息、谣言、诋毁信息等,进而造成无法控制的网络扩散,影响公司形象和声誉的事件; (二)媒体危机事件:即有可能通过报刊、杂志、广播、电视新闻等途径传播企业的负面信息、谣言、诋毁信息等,进而造成大范围主流舆论误导或错误认知,影响公司形象和声誉的事件;

(三)口碑危机事件:即有可能通过某些影响力较大的个人或群体,向公司目标客户群体及合作伙伴群体传播企业不良信息,进而造成范围性人群的错误认知,影响公司形象和声誉的事件; (四)司法危机事件:即有可能因个别事件为诱因,造成个人或组织通过司法程序向公司提起诉讼,进而造成公司被动面对诉讼,造成直接或间接损失,影响公司形象和声誉,甚至影响公司市场拓展的事件; (五)政策危机事件:即有可能因为区域或地方法律法规、政策的修改,造成公司的市场行为无法在当地区域合法开展下去,影响公司及合作伙伴正常经营的事件。 第五条任何危机事件均有其发生、发展的原因,在公司经营过程中,常见的诱因包括但不限于以下内容,全体员工均应熟知并不断提高敏感性和责任感,将诱发危机的原因抑制在可控范围:(一)产品质量 偶发的产品质量问题,有可能因消费者个人影响力的大小,致使其升级为公司危机事件;频发或大面积的产品质量问题,有可能因其频率和发生的范围等因素,致使其升级为企业危机事件; (二)服务质量 服务作为公司品牌支撑的重要要素,一旦发生服务质量的不达标,或者二次服务质量的不达标,将非常有可能使小范围事件升级为公司危机事件; (三)承诺兑现

重大事件及紧急事件处理制度

重大事件及紧急事件处理制度 重大事件及紧急事件处理制度作者:佚名 时间:2008-3-22 浏览量:重大事件及紧急事件处理制度 一、重大事件报告制度 为及时妥善处理重大或突发事件,避免和控制事件发生,特制定重大事件报告制度。 .重大或突发事件包括:火灾、电梯困人、爆炸、突发性停电、水浸、盗窃、械斗等破坏行为;刑事案件;业户集体投诉(5家以上);中央空调主机、发电机、高低压电柜、通讯设备等大厦主要设备设施故障;大厦主体结构遭受破坏等。 2.发生重大或突发事件,参与事件处理的组长或当值主管应立即到现场处理,同时尽快口头向管理办主管领导报告,并根据事发情节决定是否报告公安、消防等机构协助处理。 3.参与事件处理的组长在事件处理后立即填写重大事件报告表,于12小时内以书面形式递交管理办主任,详述事件发生的时间、地点、经过,以及事件发生的初步原因和处理经过。 4.重大事件报告表由组长签名后上报。如组长不在而事件紧急时,可由当值主管签名上报。

5.参与事件处理的部门应在事件处理完毕后24小时内填写重大事件总结表上报管理办主任,如实汇报事件的详细处理过程及结果,找出事件发生的主要原因,提出避免类似情况发生的预防措施。 二、紧急事件处理程序 1.突发事件的处理程序 (1)凡遇突发事件(指凶杀、抢动、盗窃、勒索、打架、闹事、伤亡或重大纠纷等),必须保持冷静,立即采取措施,并报告当值组长。 (2)简要说明事发的地点、性质、人数、特征及损失价值。(3)驱散无关人员,保护好现场,留意现场周围的情况。(4)查看本部各类记录、出入登记和电视录像,检查有无可疑情况和人员。 (5)对勒索、打架事件,监控中心应密切注意事发现场的情况变化。 (6)对纠纷事件应及时了解具体原因,积极协调,劝阻争吵,平息事态。 (7)对伤亡事件应做好现场保护和通知抢救工作;对明确已死亡的,应报派出所调查处理并通知殡仪馆。 (8)对涉及刑事及重大责任事故或因治安、刑事案件引致的伤亡事故,应立即报告公安机关并由保安组组长协助调查处理。

AWT事件处理

Java AWT事件处理 1 AWT事件处理基本概念 AWT事件处理的过程中,主要涉及3类对象。 (1) Event(事件):用户对组件的一个操作,称之为一个事件,以类的形式出现,例如,键盘操作对应的事件类是KeyEvent。其实例在改事件发生时有系统自动产生。 (2) Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮Button。 (3) Event Monitor(事件监听器):接收事件对象并对其进行处理的类的对象,通常其中某个成员方法对事件进行相应的处理。 事件委托处理模型 图10-10 事件委托处理模型 Java采取了事件委托处理模型(Delegation Model),事件源自己不处理事件,而是把在其自身所有可能发生的事件委托给事件监听器来处理。比如,在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以委托给事件监听器1来处理鼠标事件,同时委托给事件监听器2来处理键盘事件。委托模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。 2 事件

事件分类。 按事件的性质分类 java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件。 (1)低级事件 低级事件是指基于组件和容器的事件,当一个组件上发生事件,如鼠标的进入、点击、拖放等,或组件的窗口开关等时,触发了组件事件。 —ComponentEvent(组件事件:组件尺寸的变化、移动); —ContainerEvent(容器事件:组件增加、移动); —WindowEvent(窗口事件:关闭窗口、窗口闭合、图标化); —FocusEvent(焦点事件:焦点的获得和丢失); —KeyEvent(键盘事件:键按下、释放); —MouseEvent(鼠标事件:鼠标单击、移动)。 (2)高级事件(语义事件) 高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类。比如,在TextField中按Enter键会触发ActionEvent事件,滑动滚动条会触发AdjustmentEvent事件,选中项目列表的某一条就会触发ItemEvent事件。 —ActionEvent(动作事件:按钮按下,TextField中按Enter键); —AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值); —ItemEvent(项目事件:选择项目,不选择“项目改变”); —TextEvent(文本事件:文本对象改变)。

异常情况处理制度及流程

山西煤炭运销集团 蒲县昊锦塬煤业有限公司异常情况处理制度为认真贯彻落实国家、省、市关于集中开展安全生产大检查的工作安排要求,加强我矿信息监控系统管理水平,做好矿井生产过程中井下环境参数的有效监控,保障矿井安全生产,加强煤矿安全生产管理水平及抗灾能力,特制定本矿异常情况处理制度如下: 一、值班人员按《中心岗位责任制》规定,浏览查询煤矿安全信息,发现异常情况及时处理,并认真填写《异常情况报告处理表》,传真至县监控中心。 二、监控室值班人员发现系统发出异常报警后,值班人员必须立即通知监控室主任、分管领导,同时立即通知矿井调度部门,由监控室主任或分管领导组织相关人员对本次异常报警进行原因分析,并按规定程序及时报上一级网络中心。处理结果应记录备案。调度值班人员接到报警、断电信息后,应立即向矿值班领导汇报,矿值班领导按规定指挥现场人员停止工作,断电时撤出人员。处理过程应记录备案。当系统显示井下某一区域瓦斯超限并有可能波及其他区域时,矿井有关人员应按瓦斯事故应急预案手动遥控切断瓦斯可能波及区域的电源。值班人员接到网络中心发出的报警处理指令后,要立即处理落实,并将处理结果向网络中心反馈。 当工作面瓦斯浓度达到报警浓度时,值班人员应立即通知矿值班领导及监控室主任,并填写异常情况处理报告表传真上报至

县监控中心;由分管领导或监控室主任安排相关人员进行原因分析,按照瓦斯超限分析原则:①按人工检测值与甲烷传感器对比分析;②按报警地点的历史曲线对比分析;③按报警地点上风侧检测值对比分析。根据分析结果立即将处理措施下达至矿调度中心按处理措施严格执行。报警期间要采取安全措施,报警消除后将报警的起止时间、分析报告、采取措施和处理结果上报县监控室并存档备案。 三、当煤矿通讯中断、无数据显示时,值班人员要通过传真(或电话)向县监控中心报告,并查明原因,恢复通讯。情况紧急的,由值班人员立即向矿领导汇报,对因故造成通讯中断未及时上报的,要通过电话联系移动公司或长途线务局进行抢修。

货物异常应急处置制度

货物异常应急处置制度 一、目的 确保公司在进行货物运输、装卸、存储等过程中对货物多货、少货、货损、污染、霉变、虫害、火灾、被盗、丢失及其他异常情况进行及时调查分析和处置,并遵守国家相关安全要求。 二、范围 1、本制度适用于货物运输、装卸、存储数量及质量控制; 2、本制度使用货物异常分析及处置。 三、主要职责和权限 1、理货员负责核实出入库货物数量、质量、单据和记录的控制; 2、统计员负责提供货物单据及盘点数量; 3、业务员负责货物异常的追溯、调查及对接客户的处理方案; 4、仓库经理负责处理异常货物。 四、工作程序 1、入库货物多货、少货 (1)货物拆箱时,由理货员依据入库单,清单货物数量。如发现多货或少货,首先与统计员、操作员确认入库单数量是否正确; (2)如确认的确为装箱货物数量异常,则须拍照取证,并及时上报仓库经理、操作员; (3)操作员须及时与客户沟通确认是否继续卸货,待客户确认实际到货数量,并同意卸货后,方可安排叉车工予以卸货; (4)操作员留存客户确认实际到货数量的邮件、微信等截图。 2、出库货物多货、少货 (1)货物装箱时,由理货员依据出库单,查找对应提单号货物存储位置,并检查货物状态,是否有货损、污染、霉变、虫害等情况; (2)如存储期间出现货损、污染、霉变、虫害等情况,则及时报告仓库经理,对异常情况进行调查,必要情况下,须及时通知客户以便出具处理意见; (3)货物检查无异常的,安排并监督叉车工进行装车工作,清点装货数量。 (4)如出库货物到达客户仓库后,被告知货物多货或少货的,则由仓库经理负责调取监控,查看装车视频,清点装车数量,确定为装货时数量异常还是运输过程中数量异常; (5)如装货时少货的,除上报公司外,与客户沟通单独送货还是待下批次货物一同运输; (6)如装货时多货的,除上报公司外,与客户沟通单独退货还是待下批次货物扣除同等数量。 (7)操作员留存客户确认实际到货数量、处理意见的邮件、微信等截图。 3、入库货物货损 (1)货物拆箱时,由理货员依据入库单,检查货物包装。如发现货损情况,则须拍照取证,并及时上报仓库经理、操作员; (2)由仓库经理负责调取监控,查看车辆入场、拆箱视频,确认货损出现原因;

1.异常处理机制(精)

1. 异常机制 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在一起;由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。 异常处理的流程: ①遇到错误,方法立即结束,并不返回一个值;同时,抛出一个异常对象。 ②调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常的异常处理器,并执行其中的代码。 2 异常的分类 异常的分类: ①异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。 ② Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。 每个类型的异常的特点 Error体系: Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。 Exception体系包括RuntimeException体系和其他非RuntimeException的体系: ① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现

重大突发事件应急处理制度

重大突发事件应急处理制度 第一条为及时掌握、有效应对重大突发事件,进一步加强公司抗御灾害及危机管理的能力,树立良好的社会形象,提升公司品牌美誉度,特制定本制度。 第二条本制度所称重大突发事件,是指可能与公司相关的、突然发生的,可能影响或者危及公司经营管理、正常运行或社会影响较大的自然灾害、重大意外事故、重大上访事件以及公司认为应当采取应急处理机制的其他重大事件。 第三条重大突发事件应急处理的工作原则是:统一领导、分级负责、快速反应、措施到位。各支公司要遵循这一原则,结合当地实际情况,制定重大突发事件报告制度和应急处理预案,加强对重大突发事件的预警、报告和处理。 第四条办公室为重大突发事件应急处理的归口部门,负责指导各支公司建立相应制度,并协调、检查、督促市分公司相关部门及各支公司做好对重大突发事件的预防、报告和应急处理工作。 第五条各支公司主要负责人是重大突发事件应急处理的第一责任人。各支公司要根据情况,成立重大突发事件应急处理小组,确保重大突发事件应急处理的各项工作正常进行。

第六条市分公司分管办公室的领导是重大突发事件报告制度的主要责任人。市分公司办公室是负责重大突发事件报告工作的专门机构,重大突发事件发生后,要进行全过程地了解和监控,主动实施报告制度。 第七条符合下列规定情形之一的重大突发事件,各支公司要及时向市分公司办公室及相关部门报告,并采取紧急措施进行处理: (一)台风、地震等严重的自然灾害; (二)暴雨、洪水、泥石流、滑坡等自然灾害,涉及或可能涉及我公司承保责任,可能造成报(估)损金额1000万元人民币(含)以上,或者死伤人数10人(含)以上的; (三)突发性严重传染性疾病或群体性疾病、重大食物中毒等公共卫生事件,造成重大社会影响,涉及或可能涉及我公司承保责任的; (四)特大火灾爆炸、安全生产事故、责任事故或意外交通事故等,涉及或可能涉及我公司承保责任,报(估)损金额1000万元人民币(含)以上,或者发生死伤人数10人(含)以上,造成较大社会影响的; (五)我公司承保的飞机失事、轮船航行事故等特殊风险事故,引起社会广泛关注的; (六)20名(含)以上被保险人或员工、相关事故受害人及其家属集体上访、静坐或采取其他过激行为,或者虽然

java AWT教程

5.2.1 事件类 与AWT有关的所有事件类都由java.awt.AWTEvent类派生,它也是EventObject类的子类。AWT事件共有10类,可以归为两大类:低级事件和高级事件。 java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件,低级事件是指基于组件和容器的事件,当一个组件上发生事件,如:鼠标的进入,点击,拖放等,或组件的窗口开关等,触发了组件事件。高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类,如在TextField中按Enter键会触发ActionEvent事件,滑动滚动条会触发AdjustmentEvent事件,或是选中项目列表的某一条就会触发ItemEvent事件。 ◇低级事件 ComponentEvent(组件事件:组件尺寸的变化,移动) ContainerEvent(容器事件:组件增加,移动) WindowEvent(窗口事件:关闭窗口,窗口闭合,图标化) FocusEvent(焦点事件:焦点的获得和丢失) KeyEvent(键盘事件:键按下、释放) MouseEvent(鼠标事件:鼠标单击,移动) ◇高级事件(语义事件) ActionEvent(动作事件:按钮按下,TextField中按Enter键) AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值) ItemEvent(项目事件:选择项目,不选择"项目改变") TextEvent(文本事件,文本对象改变) 5.2.2 事件监听器 每类事件都有对应的事件监听器,监听器是接口,根据动作来定义方法。 例如,与键盘事件KeyEvent相对应的接口是: public interface KeyListener extends EventListener { public void keyPressed(KeyEvent ev); public void keyReleased(KeyEvent ev); public void keyTyped(KeyEvent ev); } 注意到在本接口中有三个方法,那么java运行时系统何时调用哪个方法?其实根据这三个方法的方法名就能够知道应该是什么时候调用哪个方法执行了。当键盘刚按下去时,将调用keyPressed( )方法执行,当键盘抬起来时,将调用keyReleased( )方法执行,当键盘敲击一次时,将调用keyTyped( )方法执行。

生产异常处理机制

广东樱雪有限公司文件组装车间异常工时责任追究考核管理办法(修订版)为了确保制造部月度产量目标达成,确保公司生产经营紧张有序,生产压力在各生产支持主责模块间有效传递与分解,实现不停线、不断线、不下线,及时暴露生产异常并进行有效责任追究,经公司研究决定特制定本考核管理办法。一、总装车间生产支持主责模块及必须有效支持的项目

二、主要生产异常类型与主责模块责任界定

三、各类生产异常情况责任人分解 四、生产异常情况异常工时责任追究执行标准

五、生产异常责任追究运作模式 1、组装车间在生产过程中出现异常情况时由生产线线长、物料调度(指仓管 的方式通知主责模块第一责任 人,相关责任人收到异常信息后应立即(要求在接到信息的 现场进行处理和确认,如果不到现场处理和确认则视同默认车间反馈的异常事件及处理异常对车间生产影响的时间; 2、的形式通知主责模块第一责任 人(责任人到达现场除外),同时将异常工时与责任模块第一负责人进行口头初步确认; 3、的异常情况,由生产线线长(指发泡总装线)、物料 调度(指仓管员)在填写《异常工时责任追究反馈表》在上交车间主任审核,车间主任审核完后在各生产部部长审批; 4、《异常工时责任追究反馈表》审批流程:生产线线长、仓管员(填写)→ 车间主任(审核)→各生产部部长(审批); 5、各生产部部长将审批完后的《异常工时责任追究反馈表》在 的形式发送至相关责任人处进行公示; 6、相关责任人在收到《异常工时责任追究反馈表》后默认视同接受,如果有

各生产部部长进行沟通反馈,各生产部部长收到异议反馈后组织异议调查最终将以事实依据作为最终裁定; 7、最终裁定的《异常工时责任追究反馈表》将在事件发生日的 8、生产副总助理汇总上月所有异常工时责任追究统计表输出《异 常工时责任追究月度处罚明细表》,经制生产副总(审核)、总经理(审批)后报送行政部(执行扣罚); 9、异常工时责任追究月度处罚金额在责任人当月工资中扣除; 10、各班组负责人根据本班组异常工时产生的罚款额度以 形式提交申请,经各制造部部长(一审)、生产副总(二审),生产副总(批准)后报送各生产部车间统计员将罚款额度纳入受影响班组的当月工资总额; 六、其他事项 1、本考核管理办法由生产部负责起草、修订、解释、执行; 2、本考核管理办法从2013年*月*日起试行考核; 3、为了提高各主责模块对异常工时改进的重视程度,要求各主责模块每月收 到正式版《异常工时责任追究月度处罚明细表》后的三个工作日向生产部提交《异常工时改进方案》; 4、各主责模块提交的《异常工时改进方案》,要求要对产生的异常工时进行数 据分析、原因总结、明确改进措施、落实责任人与改善进度; 5、生产部对各部门的《异常工时改进方案》进行收集、审核、评价; 6、行政部对各主责模块《异常工时改进方案》的评价结果纳入部门月度绩效 考核,根据改进的效果对责任部门实行扣分或加分;

应急处置机制

应急处置机制 (一)组织领导。成立由镇(街道)党政主要领导任组长、中心主任任副组长的突发事件处置领导小组,中心各成员单位为领导小组成员。按照统一指挥、组织有序、分工明确、条块协调、保障有力、信息及时的原则。开展突发事件的处置工作。 (二)使用范围。发生影响社会稳定的重大事件(群体性矛盾激化上访、非正常群死群伤等)、重大治安案件(因治安问题诱发群体性事件)、重大安全生产事故(死亡3人以上)、突发公共卫生事件(重大传染病疫情、集体食物中毒)、自然灾害(地震、台风、潮汛等)、其他重大突发事件时,启动突发事件应急处置机制。 (三)制定预案。中心应结合实际,制定各类突发事件应急处置预案,确保一旦发生突发性、群体性事件,在党委、政府的领导下,能够迅速、有效组织协调有关部门依法妥善处置。制定的预案要明确组织领导、部门职责、资源调配和使用、处置责任等。 (四)处置流程 1、启动预案。突发事件发生后,最先接报的部门要第一时间向中心领导报告,中心领导根据事件性质,决定是否启动应急预案。 2、先期处置。中心接报后要迅速派员赶赴现场,会同

有关部门,维护现场秩序,查实事件性质、发生时间、发生原因、涉及范围、人员财产损失等基本情况,并及时报告县(市、区)、镇(街道)领导和有关部门。 3、现场处置。处置人员到达现场后,要协调有关部门及时采取措施、救援、保全等措施,防止事态扩大。 4、善后工作。事件处置完毕,各有关部门要按职责分工,做好现场清理、布控、统计、安抚等工作。 (五)保障措施 1、中心指定专人每天24小时轮流值班备勤,负责协调、处理有关情况,遇有重大突发事件必须迅速向中心领导报告。 2、各部门按照职责分工做好物资、设备、设施、技术和人才资源的储备工作,所需经费列入财政预算。

相关文档