当前位置:文档之家› 03 处理错误和异常

03 处理错误和异常

03 处理错误和异常
03 处理错误和异常

第3章处理错误和异常

对于语言来说,出现错误和异常是正常的,关键在于如何捕捉异常以及如何处理异常和错误,.NET 为此提供了专门的异常处理机制。

在本章中,首先将学习异常处理的基本原理和语法,在此基础之上,将进一步学习异常处理的优缺点和应对方法,除此之外,还会学习一些特殊的异常处理的方法,例如使用Exception 类和派生类处理异常的方法。

3.1 处理错误

所谓异常,指的是在代码运行过程中出现一些编程者没有预料到的不同于正常情况的问题,这些问题需要特殊的处理机制进行合理化的处理,这样做的目的是保证程序在出现这些问题的时候仍然能够完成一次正常的过程,在C#语言中处理这些问题的方法就称之为异常处理机制。

例如,现在程序需要完成一次读文件的过程,在程序读取到文件的末尾时,就需要做适当的处理,以避免程序出错,这种动作就具有预知性,同时对该问题的处理并不妨碍程序的执行,在整个处理过程中,都需要使用语言提供的异常处理机制对程序进行预处理,比如,遇到文件末尾时就自动弹出“结束”对话框或者提示程序走到了尽头,需要编程者干预等都可以作为异常处理的机制。

3.1.1 异常处理的实例

下面看一个完整的例子,在例子之后会详细地分析该代码。

(1)打开Visual Studio 2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开Visual Studio 2005编辑器的创建向导,然后选择C#语言,最后选择“控制台应用程序”,如图3.1所示。

图3.1

异常处理机制的演示

第4章

处理错误和异常

(2)修改生成的代码文件如下所示:

using System;

using System.Collections.Generic;

using System.Text;

namespace error

{

class Program

{

static int Main(string[] args)

{

Console.WriteLine("异常处理机制的演示");

int x, y;

x=Convert.ToInt16(Console.ReadLine());

y=Convert.ToInt16(Console.ReadLine());

try

{

int z = x / y;

Console.WriteLine(z);

}

catch

{

Console.WriteLine("发生异常了!

");

}

return 0;

}

}

}

(3

)使用快捷键“Ctrl+F5”执行程序,结果如图3.2所示。

图3.2 异常处理的结果零基础学 Visual C# 2005

第4章处理错误和异常

3.1.2 异常处理机制的解释

这段程序演示了在程序出现异常时,如何使用异常处理机制对异常进行处理。

在程序的第一段代码中,首先要求客户输入两个数字作为变量x和y的值,这里使用了Convert函数,这个函数是一个变量类型转换函数,可以将string类型转换成整型。

Console.WriteLine("异常处理机制的演示");

int x, y;

x=Convert.ToInt16(Console.ReadLine());

y=Convert.ToInt16(Console.ReadLine());

整个程序最重要的代码如下所示,在下面的代码中,整型变量x除以整型变量y,按照常规,操作符“/”应该是取整后的结果,将赋值给整型z。但是问题也就出现在这里,这里的整型变量y并未做非0处理,有可能出现x整除0导致程序的异常现象出现,为了防止这一点,这里使用了C#语言提供的异常设计代码try,如果出现异常,则异常处理机制会直接接管程序,并将程序转到异常处理模块代码部分。

try

{

int z = x / y;

Console.WriteLine(z);

}

下面的代码就是异常处理的代码部分,catch语句是C#语言的捕获异常代码的语句,在捕获代码异常之后,catch会自动执行编程者要求的处理异常方法,例如下面代码的输出异常提示语句就是编程者设计的处理异常的方法。

catch

{

Console.WriteLine("发生异常了!");

}

在catch语句之中,通常还会用到Exception类,该类是一个异常处理的类,会在后面提到。

3.2 抛出异常的throw

C#语言提供的异常处理机制主要是通过特定的代码捕获异常,然后将程序转入异常处理代码部分,再做各种动作。在C#语言中提供了如下处理异常的代码块:

q throw:抛出异常的代码块。

q catch:捕获异常的代码块。

q finally:清理异常的代码块。

大多数情况下,C#语言会自动将捕获的异常交给异常处理代码块处理,但是在某些情况下,也需要编程者自行设定抛出异常的位置,这时就需要使用抛出异常的throw语句。throw语句的语法如下:throw {Exception };

在这里,Exception是一个异常处理类,属于可选项。只有在程序重新抛出一个异常时,才可以省略这个类,否则都需要声明一个Exception类的对象,如下所示:

throw new Exception;

3.2.1 抛出异常的实例

一个应用throw的程序范例如下所示,在这个程序中,在设定位置抛出一个异常,然后处理该异常。

(1)打开Visual Studio 2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开Visual

Studio 2005

编辑器的创建向导,然后选择

C#语言,最后选择“控制台应用程序”,如图3.3所示。

图3.3 异常处理机制的演示

(2)修改生成的代码文件,如下所示:

using System;

using System.Collections.Generic;

using System.Text;

namespace @throw

{

class Program

{

static void Main(string[] args)

{

string str = null;

try

{

if (str == null)

{

throw new ArgumentException();

}

}

catch (Exception e)

{

零基础学 Visual C# 2005

Console.WriteLine("throw new exception");}}}}

(3)使用快捷键“Ctrl+F5”执行程序,结果如图3.4所示。

图3.4 异常处理的结果

3.2.2 抛出异常实例的解释

在这个程序中,模拟了编译器抛出异常的过程。在开始阶段,首先定义一个引起异常的条件,这里定义字符串类型变量的值为null 。

string str = null;

接着捕捉异常,使用throw 抛出一个新的异常,然后使用try 捕获异常。

try {

if (str == null){

throw new ArgumentException();}}

与try 语句配套,在捕获异常之后,使用catch

语句进行异常处理,这里是简单的输出提示异常的语句信息,读者也可以编写一些更具体的信息,比如输出异常时编译器引发的信息等。

catch (Exception e){

Console.WriteLine("throw new exception");}

第4章处理错误和异常

3.3 捕获异常的catch

catch 语句是异常处理机制中的第二种方法,该语句往往需要跟try 语句配对实现,catch 语句中的语句被称为异常处理方法。

要想捕获一个异常,可以将要执行的代码放在try 代码块里面,然后在catch 块中指定要处理try 块中抛出的哪些类型的异常,例如上面例子中所示的那样。除非try 块中的方法抛出了一个异常,否则try 块中的代码都将按照正常的顺序进行,如果抛出了异常,那么就会将控制权转移到catch 语句中。

一个完整的语句如下代码所示:

try {}catch {}

3.3.1 捕获异常的实例

下面通过一个例子来分析上面的内容。在这个例子中,程序沿用了模拟数据库的设计,异常处理方法将捕获数据库打开时发生的异常。

(1)打开Visual Studio 2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开Visual Studio 2005编辑器的创建向导,然后选择C#语言,最后选择“控制台应用程序”,如图3.5所示。

图3.5 catch 语句的演示

(2

)修改生成的代码文件,如下所示:

using System;

using System.Collections.Generic;using System.Text;

零基础学 Visual C# 2005

namespace @catch {

class DataBase {

public bool opendb(){

throw new Exception("打开数据库文件错误");return true;}

public bool login(){

return true;}}

class Program {

static void Main(string[] args){

Console.WriteLine("处理数据库操作引发的异常");DataBase db = new DataBase();

try {

Console.WriteLine("打开数据库");if (db.opendb()){

Console.WriteLine("打开数据库成功");

Console.WriteLine("登录数据库");if (db.login()){

Console.WriteLine("登录数据库成功

");}}

}

catch (Exception e){

Console.WriteLine("引发异常:{0}",e.Message);}}}}

(3)使用快捷键“Ctrl+F5”执行程序,结果如图3.6所示。

第4章处理错误和异常

图3

.6 catch 语句的演示结果

3.3.2 捕获异常实例的解释

在程序的开始处,首先定义了一个DataBase 的类,然后定义了该类的成员函数opendb 和login ,在opendb()中,人为地抛出一个“打开数据库文件错误”的异常。

class DataBase {

public bool opendb(){

throw new Exception("打开数据库文件错误");

return true;}

public bool login(){

return true;}}

在Main()函数中,首先声明并初始化了一个DataBase 类的对象db ,这是为了方便使用“人造的”异常。

Console.WriteLine("处理数据库操作引发的异常");DataBase db = new DataBase();

接着,程序根据db.opendb 的结果判断是否捕获异常,这里因为设定的是在返回true 之前就抛出异常,所以在判断db.opendb 之前就触发了程序异常,程序转入异常处理方法中。

try {

Console.WriteLine("打开数据库");if (db.opendb())

零基础学 Visual C# 2005

第4章处理错误和异常

{

Console.WriteLine("打开数据库成功");

Console.WriteLine("登录数据库");

if (db.login())

{

Console.WriteLine("登录数据库成功");

}

}

}

与上述实例不同的是,这个实例中使用了Exception类,并将该类的异常信息输出。Exception类是一个异常类,专门负责处理各种异常信息,这里仅仅使用了基本的功能。

catch (Exception e)

{

Console.WriteLine("引发异常:{0}",e.Message);

}

3.4 使用多个catch处理程序

从上面的程序中可以看到,如果在程序中抛出多个异常,程序肯定无法处理,这时就需要使用多个catch语句进行相应的处理。一个典型的实例如以下代码所示:

try

{

A(); //第一个异常

B(); //第二个异常

}

catch(AException e)

{

}

catch(BException e)

{

}

catch(Exception e)

{

}

一定不能将最后一个异常放在所有异常的前面,这样程序将无法执行,代码如下所示:

try

{

A(); //第一个异常

B(); //第二个异常

}

catch(Exception e)

{

}

catch(AException e)

{

}

catch(BException e)

{

}

3.4.1 使用多个catch处理程序的实例

下面通过一个例子来分析上面的内容。在这个例子中,程序沿用了模拟数据库的设计,异常处理方法将捕获数据库打开时发生的异常。

(1)打开Visual Studio 2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开Visual

Studio 2005

编辑器的创建向导,然后选择

C#语言,最后选择“控制台应用程序”,如图3.7所示。

图3.7 多个catch语句的演示

(2)修改生成的代码文件,如下所示:

using System;

using System.Collections.Generic;

using System.Text;

namespace @catch

{

class DataBase

{

public bool opendb()

{

throw new ArgumentException("打开数据库文件错误");

return true;

}

public bool login()

{

throw new IndexOutOfRangeException("登录数据库引发错误");

return true;

零基础学 Visual C# 2005

}

public bool closedb(){

throw new Exception("关闭数据库引发错误");return true;}}

class Program {

static void Main(string[] args){

Console.WriteLine("处理数据库操作引发的异常");DataBase db = new DataBase();try {

Console.WriteLine("打开数据库");if (db.opendb()){

Console.WriteLine("打开数据库成功

");Console.WriteLine("登录数据库");if (db.login()){

Console.WriteLine("登录数据库成功");}}

if (db.closedb()){

Console.WriteLine("关闭数据库成功");}

}

catch (ArgumentException e){

Console.WriteLine("引发异常:{0}", e.Message);}

catch (IndexOutOfRangeException e){

Console.WriteLine("引发异常:{0}", e.Message);}

catch (Exception e){

Console.WriteLine("引发异常:{0}", e.Message);}}}}

第4章处理错误和异常

3)使用快捷键“Ctrl+F5

”执行程序,结果如图3.8

所示。

图3.8 第一个异常引起的异常处理

(4)将第一个抛出异常的语句注释掉,继续使用快捷键“Ctrl+F5”执行程序,结果如图3.9所示。

图3.9 第二个异常引起的异常处理

(5)将第二个抛出异常的语句注释掉,继续使用快捷键“Ctrl+F5”执行程序,结果如图3.10所示。

图3.10 第三个异常引起的异常处理

零基础学 Visual C# 2005

第4章处理错误和异常(6)将第三个抛出异常的语句注释掉,继续使用快捷键“Ctrl+F5”执行程序,结果如图3.11所示。

图3.11 没有异常的结果

3.4.2 使用多个catch处理程序实例的解释

在这个程序中,使用了多个catch处理程序处理多个抛出的异常,这在复杂程序中特别有用。

在对类的定义中,分别对三个成员函数定义了三个抛出异常的地点,分别使用了三种不同的异常方法,分别是ArgumentException、IndexOutOfRangeException和Exception,前两个异常类分别继承自第三个异常类,所以要将第三个异常放在最后。

public bool opendb()

{

throw new ArgumentException("打开数据库文件错误");

return true;

}

public bool login()

{

throw new IndexOutOfRangeException("登录数据库引发错误");

return true;

}

public bool closedb()

{

throw new Exception("关闭数据库引发错误");

return true;

}

在主程序中,针对这三种抛出的异常使用三个catch语句进行处理,可以在图中看到,针对不同的异常,处理的结果是不同的。

catch (ArgumentException e)

{

Console.WriteLine("引发异常:{0}", e.Message);

}

catch (IndexOutOfRangeException e)

{

Console.WriteLine("引发异常:{0}", e.Message);

}

catch (Exception e)

{

Console.WriteLine("引发异常:{0}", e.Message);

}

3.5 使用finally清理异常

简单地说,finally语句就是将try语句和catch语句中不方便执行的代码集合起来,放在finally语句块中执行的语句。一般来说,在try语句中引起异常的时候,其中剩下的语句将不会继续执行,但是这些语句又要求得到执行,于是finally语句就派上了用场。

例如,在上述模拟数据库的代码中,如果在try代码块中引发异常,那么就不会继续执行关闭数据库的操作,这对于数据库操作来说是不应该的,为了避免这种情况,可以将关闭数据库操作转移到finally代码块中,例如可以写为如下代码:

class DataBase

{

public bool opendb()

{

throw new Exception("打开数据库文件错误");

return true;

}

public bool login()

{

return true;

}

public bool CloseDb()

{

return true;

}

}

class Program

{

static void Main(string[] args)

{

Console.WriteLine("

处理数据库操作引发的异常");

DataBase db = new DataBase();

try

{

Console.WriteLine("打开数据库");

if (db.opendb())

零基础学 Visual C# 2005

{

Console.WriteLine("打开数据库成功");Console.WriteLine("登录数据库");if (db.login()){

Console.WriteLine("登录数据库成功");}}

}

catch (Exception e){

Console.WriteLine("引发异常:{0}",e.Message);}

finally {

Db.CloseDb();

}}

3.5.1 finally 清理异常的实例

下面这个程序演示了如何恰当的使用finally 语句的方法,这个程序的结构仍然沿袭了以往模拟数据库操作的过程,但是有所区别,在以前的程序中,在打开数据库之后,如果出现异常,程序自然进入异常处理代码段,并不会主动关闭数据库连接;这个程序则做了一定的改进,通过使用finally 语句,可以保证无论什么时候进入异常处理程序,都能顺利地关闭数据库。

(1)打开Visual Studio 2005编辑器,单击“文件”菜单,选择“新建项目”命令,打开Visual Studio 2005

编辑器的创建向导,然后选择C#语言,最后选择“控制台应用程序”,如图3.12所示。

图3.12 finally 清理异常的演示

(2)修改生成的代码文件,如下所示:

using System;

using System.Collections.Generic;

第4章处理错误和异常

using System.Text;

namespace Finally

{

class DataBase

{

protected bool isDbOpen;

public DataBase()

{

isDbOpen = false;

}

public bool IsDbOpen

{

get { return isDbOpen; }

}

public bool OpenDb()

{

isDbOpen = true;

return true;

}

public bool Login(string username,string passwd)

{

try

{

if(OpenTable("users"))

{

//处理用户名

}

}

catch(Exception e)

{

Console.WriteLine("错误类型{0}",e.GetType());

LogError(e.Message);

throw e;

}

return true;

}

public void CloseDb()

{

isDbOpen = false;

}

public bool OpenTable(string table)

{

零基础学 Visual C# 2005

throw new Exception("没有找到表");}

protected void LogError(string Error){

Console.WriteLine("登录错误{0}",Error);}}

class Program {

static void Main(string[] args){

Console.WriteLine("处理异常错误");DataBase db=new DataBase();

try{

Console.WriteLine("打开数据库");if(db.OpenDb()){

Console.WriteLine("

打开数据库成功");Console.WriteLine("登录数据库");if(db.Login("user","pwd")){

Console.WriteLine("登录数据库成功");}}

}

catch(Exception e){

Console.WriteLine("捕捉到错误:{0}",e.Message);}

finally {

if(db.IsDbOpen){

Console.WriteLine("关闭数据库");db.CloseDb();}}

Console.ReadLine();}}}

(3)使用快捷键“Ctrl+F5”执行程序,结果如图3.13所示。

第4章处理错误和异常

3.13 finally 成功地关闭了数据库

3.5.2 finally 实例的解释

这段代码中首先定义了一个类D a t a B a s e ,这个类模拟了数据库的打开、读取和关闭操作。DataBase 类首先定义了一个布尔变量isDbOpen ,这个变量是判断是否打开了数据库的标志,在使用之前,首先将其赋值为false ,这是在DataBase 类的构造函数中完成的。

class DataBase {

protected bool isDbOpen;

public DataBase(){

isDbOpen = false;}

public bool IsDbOpen {

get { return isDbOpen; }}

接下来定义了打开数据库O p e n D b 、登录数据库L o g i n 的操作。如果成功打开数据库,则将isDbOpen 标志改为true ,这在OpenDb 成员函数中完成。

在打开数据库表时,可能引起异常,所以在这里使用了try 语句捕捉数据库异常操作,如果打开表错误,则捕获错误,输出错误信息。

public bool OpenDb(){

isDbOpen = true;return true;}

public bool Login(string username,string passwd){

try

零基础学 Visual C# 2005

第4章处理错误和异常

{

if(OpenTable("users"))

{

//处理用户名

}

}

catch(Exception e)

{

Console.WriteLine("错误类型{0}",e.GetType());

LogError(e.Message);

throw e;

}

return true;

}

接下来模拟了关闭数据库、打开表操作和登录错误的信息,在关闭数据库之后,将标志位isDbOpen改为false。

在打开数据库表时,特意抛出一个异常,从而将程序转入catch异常处理代码块。登录错误成员函数则直接输出一个登录错误的信息,这个错误信息是由error导入的。

public void CloseDb()

{

isDbOpen = false;

}

public bool OpenTable(string table)

{

throw new Exception("没有找到表");

}

protected void LogError(string Error)

{

Console.WriteLine("登录错误{0}",Error);

}

}

在Main()函数中,执行打开数据库操作,因为读取数据库表的错误引起了程序抛出一个异常,导致进入catch异常处理程序,在catch代码块中输出异常错误信息。

try{

Console.WriteLine("打开数据库");

if(db.OpenDb())

{

Console.WriteLine("打开数据库成功");

Console.WriteLine("登录数据库");

if(db.Login("user","pwd"))

{

Console.WriteLine("登录数据库成功");

}

}

}

catch(Exception e)

{

Console.WriteLine("捕捉到错误:{0}",e.Message);

}

因为有finally语句,在执行catch语句之后程序转入finally代码块。代码首先判断当前是否已经打开数据库,如果是则将其关闭。

finally

{

if(db.IsDbOpen)

{

Console.WriteLine("关闭数据库");

db.CloseDb();

}

}

3.6 使用Exception类

在前面的程序实例中,经常使用到Exception类,这是几个在C#语言中可以使用的异常处理类的基类。但是从其派生的异常类并没有在基类的基础上添加任何功能,这是因为在前面的实例中可以看到,如果遇到多个异常需要处理时,就要使用多个catch语句进行处理,在多个catch语句中必须使用不同的异常处理类。

3.6.1 构造Exception对象

在Exception类中有四个构造函数,如下所示:

1. Exception()

这种形式的构造函数的语法形式如下:

public Exception()

这是默认的构造函数,没有参数,并且对所有成员变量采用默认值的方法调用,初始化Exception 类的新实例,对其通常的调用方式是:

//捕获异常,抛出异常

throw new Exception();

2. Exception(string)

这是带有一个参数的构造函数,其中的参数string类型变量表示错误消息的值,在以前应用的大多数例子中均是使用这个构造函数,其语法如下所示:

public Exception(string)

捕获这个构造函数的错误消息需要使用Exception类的Message特性获得,下面是一个范例。

这个程序演示了如何使用带一个参数的Exception类的过程,程序首先定义了一个文件类型操作的零基础学 Visual C# 2005

生产现场常见的问题及错误的解决方式

生产现场常见的问题及错误的解决方式 企业在其成长过程中,常常会经历各种不同的阶段和遇到不同层面的许多问题点。对于企业来说,发展战略是成功的坚实基础,但是企业往往失败在战术方面。所谓的战术失败,指的是在生产现场的问题点没能得到及时、有效的解决,从而也相应的使问题层出不穷。这种战术上的失败极有可能导致战略上的失败。因此,分析企业生产现场所常遇见的各类问题,以及研究企业对问题处理过程中所通常贯用的方式,是很有现实意义的。 一、常见的问题 所谓管理,就是要管理异常的事情,而正常的事情并不需要加以管理。作为管理干部,本身并不需要参与具体生产的活动,管理者所要做的就是在生产现场出现问题时,能及时、有效地排除异常的问题。生产现场的活动是很复杂的,其中可能包含了很多繁琐的流程。因 此,在生产现场将会遇到各方面的很多问题。 1、作业流程不顺畅 2、每一条生产线中,一般都包含多个流程。因此,生产现场最常见的问题就是作业流程不顺畅。作业流程不顺畅的最直接影响就是致使公司生产产品所需的平均工时增加,从而相应地降低了生产现场的工作效率,甚至导致产品不能按时交货。当遇到作业流程不顺畅时,最常用的方法是再增加同样的生产线。这样一来势必就浪费了不少工时,增加了企业对生产设备的投入,从而严重影响到公司产品生产的成本不断增加和效率不断下降。 3、 4、不良品的混入 5、如果生产现场不是井井有条,就会经常发生不良品混入的情况。所谓不良品的混入,指的是进料检验过程中出现的漏检,导致一部分不良的原料混入到生产线;或在进料检验过程中已经检验出来,并隔离在仓库,而在领料的过程中又粗心地领出来,混入了生产制造过程中;甚至有可能检验隔离出来的半成品,在进入下一道工序时又粗心地混入其中。 6、不良品的混入必然会造成重复返工。重复返工在作业过程中的经常发生,又相应地使产品的品质不断下降。最后,不合格的产品必将直接导致客户产生抱怨,要求退货,更为严重的是,客户以后不再愿意与企业合作。产品质量的好坏,直接影响到生产企业的声誉,

Java-异常(习题)

java异常(习题) 练习 1. 填空 Java 中所有的错误都继承自______类;在该类的子类中, _______类表示严重的底层错误,对于这类错误一般处理的方式是___________; _______类表示例外、异常。 2. 查api,填空 异常类java.rmi.AlreadyBoundException,从分类上说,该类属于__________(已检查| 未检查)异常,从处理方式上说,对这种异常___________________; 异常类java.util.regex.PatternSyntaxException,从分类上说,该类属于_________(已检查|未检查)异常,从处理方式上说,对这种异常__________________。 4. (try-catch-finally)有如下代码:

问:当读入的n 分别为1,2,3,4,5 时,输出的结果分别是什么?

5. (自定义异常)创建两个自定义异常类MyException1 和MyException2。 要求: 1) MyException1 为已检查异常,MyException2 为未检查异常 2) 这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的详细信息。

问: 在//1 处,填入以下________代码可以编译通过,在//2 处,填入_________代码可以编译通过。 A. throws java.io.IOException B. throws java.io., java.io.EOFException C. throws java.sql.SQLException D. 不能抛出任何异常。

C异常处理(精)

#include "stdafx.h" #include #include #include // 内存泄露检测机制 #define _CRTDBG_MAP_ALLOC #ifdef _DEBUG #define new new(_NORMAL_BLOCK, __FILE__, __LINE__ #endif // 自定义异常类 class MyExcepction { public: // 构造函数,参数为错误代码 MyExcepction(int errorId { // 输出构造函数被调用信息 std::cout << "MyExcepction is called" << std::endl; m_errorId = errorId; } // 拷贝构造函数 MyExcepction( MyExcepction& myExp { // 输出拷贝构造函数被调用信息 std::cout << "copy construct is called" << std::endl; this->m_errorId = myExp.m_errorId; }

~MyExcepction( { // 输出析构函数被调用信息 std::cout << "~MyExcepction is called" << std::endl; } // 获取错误码 int getErrorId( { return m_errorId; } private: // 错误码 int m_errorId; }; int main(int argc, char* argv[] { // 内存泄露检测机制 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ; // 可以改变错误码,以便抛出不同的异常进行测试 int throwErrorCode = 110; std::cout << " input test code :" << std::endl; std::cin >> throwErrorCode; try { if ( throwErrorCode == 110 { MyExcepction myStru(110;

品质异常处理流程模板

品质异常处理流程 (公开文件,共4页) 一、目的: 规范品质异常处理流程,提高品质异常处理的时效性,确保来料质量及生产的正常运转,同时满足顾客的质量要求。 二、范围: 适用于本公司来料、制程、出货品质异常的处理。 三、定义: 3.1 来料品质异常: a、不符合相关检验标准要求,且不良率超过质量目标时; b、合格物料制程中发现重点物料不合格时; c、有经过改善且有效果确认,但又重复发生品质异常时。 3.2 制程品质异常: a、使用不合格的原料或材料; b、同一缺陷连续发生; c、不遵守作业标准或不遵守工艺要求; d、机械发生故障或精度磨损; e、其他情形影响到产品质量时。 3.3 出货品质异常: a、客户投诉或抱怨; 四、职责 4.1 来料品质异常: 品质:a.负责填写《品质异常联络单》“异常描述”部分; b.负责将《来料检验报告》、《品质异常联络单》发送于采购,抄送工程、生产; c负责品质异常改善结果确认。 采购:负责将《来料检验报告》、《品质异常联络单》发送给供应商并及时与供应商联系跟踪供应商及时回复“原因分析”“纠正与预防措施”并将结果回复品质部. 4.2 制程品质异常: 品质部: a,负责品质异常之最终判定; b,负责确认品质异常责任部门; c,负责主导品质异常案例的处理过程; d,负责对责任单位的改善结果进行追踪确认

异常责任单位: a负责品质异常的原因分析,提出临时措施及长期改善对策并执行。 生产部: a负责品质异常的改善和预防措施的实施及验证改善措施的有效性; 其它相关单位: a在需要时进行异常改善的配合 4.3 出货品质异常: 品质部: a负责将品质异常通知各部门及确定责任部门; b负责异常改善后的跟踪确认; c负责处理客户抱怨 异常责任单位: a负责品质异常的原因分析,提出临时措施及长期改善对策并执行。 生产部: a负责品质异常的改善和预防措施的实施及验证改善措施的有效性; 营业部: a负责将客户抱怨反馈给相关部门。 其它相关单位: a在需要时进行异常改善的配合 五、工作程序: 5.1 进料品质异常: 5.1.1 依相关检验标准判定不合格,针对不合格物料标示“不合格”,并立即移至不良品区域。 5.1.2 异常成立4小时内开立《品质异常联络单》通知采购。 5.1.3 采购接《品质异常联络单》后4小时内转责任供应商。 5.1.4 供应商需于1个工作日内针对异常物料提出临时对策,如对异常内容有疑问,需在4 小时与品质相关人员确认清楚。 5.1.5 供应商必须在《品质异常联络单》要求的期限前(如无明确要求,默认为《品质异常联络单》发出后2个工作日内)回复完整的改善方案。 5.1.6 品质部对供应商回复内容进行确认,针对改善措施不合格部分予以退件,要求供应商重新回复。改善措施合格,则报告予以归档,跟踪后续进料品质状况,依5.1.7执行。 5.1.7 针对供应商改善后产品加严检验,连续追踪3批无异常予以结案,转正常检验;连续追踪3批中途发现不良现象仍存在,则重复5.1.2-5.1.7。 5.1.8 如供应商改善措施回复后连续2个月无进料,则强制结案,后续进料依正常检验执行。 5.1.9

SAP常见错误提示及解决方法

SAP常见错误提示及解决方法 序号事务代码操作错误提示截屏错误提示解释解决措施备注 1任何事物 代码都有 可能 任何操作 都有可能 类似于这种无XXX的授权或无XXX 的权限的错误提示,即提示没有 相应的权限。 出现该报错提示后,立即新开一 个窗口,在事务代码栏中输入 SU53的事务代码,回车后,将 出现的缺失权限提示拉到最底 层,截图后发给所在部门的SAP 担当或IT管理部相关人员。 2 VL02N MB1A MB1B MB1C等 物料移动 物料0253没有维护或发布过成本 价而无法做货物移动。 联系成本会计检查该物料是否 能维护并发布成本,如果没问 题,等维护并发布完成本后再做 物料移动;如果无法发布成本, 则需要更换物料号。 3MIGO采购收货物料8000没有维护或发布过成本 价而无法做MIGO采购收货的货物 移动。 联系成本会计检查该物料是否 能维护并发布成本,如果没问 题,等维护并发布完成本后再做 物料移动;如果无法发布成本, 则需要更换物料号。 4ZVB1办事处收 货 物料5100在2112工厂的办事处 在途库中缺少95PC而无法收货。 查询用于收货的交货单是否已 经过账发货,自己办事处的在途 库存究竟有多少,再考虑该如何 处理。 5VL02N/ MB1C MB1B MB1C MB1A等 物料移动 显示的物料在需要移动的工厂库 位中没有足够的库存。 检查库位的库存情况。 6VL02N MB1A 物料移动 物料移动只能做在公司代码为 2110的记账期间2008年12月和 首先检查正在操作的物料移动 的过账日期或实际发货日期是

MB1B MB1C等2008年11月,即过账日期只能选 为2008年的12月份和11月份。 否正确,将不在提示的记账期间 的日期改至错误提示中的记账 期间内。 7VL01N 根据销售 订单创建 交货单 用于创建交货单的销售订单() 不完整。 回到VA02更改销售订单事务中 使用“不完整日志”检查该订单 不完整之处,根据提示将订单维 护完整。 9VL01N 根据销售 订单创建 交货单 创建交货单时的“选择日期”没 有包括用于创建交货单的销售订 单中10行项目的计划行。 在确定销售订单中10行项目的 日期没有错误的情况下,将创建 交货单时的“选择日期”维护得 尽量晚一些,只要不早于需要创 建交货单的销售订单中的计划 行的发货时间即可。 10VL01N 根据销售 订单创建 交货单 因销售订单7629中10行项目的 装运点与据其创建交货单时使用 的装运点不同而无法正常创建交 货单。 检查销售订单7629中10行项目 的“装运点”是否正确,如正确, 则把VL01N中的“装运点”维护 成与其相同的。 11 VA01 VL01N MB21 MB1B MB1C MB1A等 创建需要 维护库位 的单据或 进行物料 移动操作 时 维护的行项目中的物料没有该库 存地点。 首先检查输入的库存地点有无 问题,再检查对应的工厂是否正 确,然后检查物料是否维护正 确,在上述都没问题的情况下, 可以联系IT管理部陈朋查看使 用的物料是否被维护了相应的 库位。 12VF02销售开票 批准至会 计 物料0253在此笔销售开票业务的 发货过账期间没有估算发布过标 准成本而导致开票结算时无法产 生会计凭证。 通知相关人员更改该物料号,并 用新物料号重新做业务。 13VF01创建出具 发票凭证 出具发票凭证无法正常进行,详 细情况见日志。 查看工具栏中“编辑”---“日 志

Java语言中的异常处理机制

Java语言中的异常处理机制 导语:为了加强程序的健壮性、流畅性、稳定性,就需要考虑有可能发生的异常,并进行相应的处理。下面就由为大家介绍一下Java语言中的异常处理机制,欢迎大家阅读! 1概述 在应用程序运行的过程中,经常会出现这样一些现象:用户不按照要求输入、需要进行处理的文件丢失、分母为零、数组下标超出预定范围、网络中断等,我们把这种现象称为异常。由于异常情况总是难免的,所以一个好的应用程序不仅要满足用户的基本需求,还要具备处理有可能出现的异常情况的能力,即程序必须具备较强的容错能力,把这种对异常进行处理的机制称为异常处理。对异常处理有两种常见方法:计算机系统遇到错误,给出出错信息并结束正在运行的程序;由程序员在程序中加入异常处理的功能。早期的程序设计语言没有提供专门进行异常处理的功能,程序员在编写程序的过程中,进行处理异常的代码往往和正常的代码混杂在一起,导致程序的可维护性和可读性下降。Java语言采取了异常处理机制,其方式为“抛出-捕获”,一个异常一旦产生,Java语言采取相应的机制来处理它,避免出现死循环、死机以及其他更大的危害,尽可能预防错误代码带来的不可预期的后果,整个程序的安全性得到了极大的提高。 2Java语言中的异常概述 Java语言提供了功能强大的异常处理机制,将所有处理异常的代码集中放置,以保证正常功能代码和处理异常的代码分开。在Java

程序设计语言中,采用了大量的异常类来进行处理,这些异常类可分为两大类:https://www.doczj.com/doc/4112813028.html,ng.Exception和https://www.doczj.com/doc/4112813028.html,ng.Error。Exception 类解决由程序本身及环境所产生的异常。而Error类则处理较少发生的内部系统错误。Exception类异常可以捕获并进行相应处理,而Error类异常,则是由用户按照系统提示关闭程序。常见的异常类如下表所示: 在以上常见的Java异常类中,每个异常类反映一类异常错误,其中包含了异常错误信息和处理方法。当程序运行过程中,出现一种异常现象,产生一个相应的异常类对象,再由相应的异常类进行处理,从而避免对系统产生更大的危害,以保证程序的正常运行。 3常见的异常处理方法 常见的异常处理方法有两种:一种处理异常是在产生异常的方法中,使用try…catch…finally结构;还有一种是进行异常的移交,使用关键字throws和throw交给上层方法去处理异常。 在该案例中,对三种异常进行了捕获,分别是数组下标越界、输入数据格式不正确和Exception异常,当触发某种异常,则对相应的异常异常进行处理。Exception异常类是所有异常的基类,当出现catch块没有进行捕获的异常,则采用Exception异常类进行异常处理。 异常的移交: 实例分析:初始化参数x使用了-2,将触发NegativeArraySizeException异常,但在Sum方法中不对该异常进

产品质量异常处理流程(精)

供应商来料异常管理流程 1. 目的: 规范来料产品的异常处理流程控制,提高来料合格率。 2. 范围: 本规范适用于所有外购零部件及外包加工件。 3. 职责与权限: 3.1生技部:负责检测治具的制作。 3.2质量中心:负责来料异常的提出、分析、处理。 3.3生产部:负责来料异常协助处理。 3.4研发部:负责来料异常的分析、处理。 3.5生管部:负责确认来料品上线使用时间。 3.6采购部:负责来料异常与供应商的纠通取得异常的处理。 4. 名词定义: 4.1不合格:未满足产品的质量要求。 4.2 A类:单位产品的极重要质量特性不符合规定,或者单位产品的质量特性极严重不符合规定。 4.3 B类:单位产品的重要质量特性不符合规定,或者单位产品的质量特性严重不符合规定。 4.4 C类:单位产品的一般质量特性不符合规定,或者单位产品的质量特性轻微不符合规定。 5、异常处理流程控制 5.1 IQC依据检验指导书、封样、评估报告等资料检验,发现来料品不满足质量要求。 5.2 IQC将自已判定为不合格的产品经工程师、部门主管核对确实为不合格品。 5.3 IQC 立即填写《供应商异常矫正单》进行处理。 5.4 质量中心主管主导组织针对异常讨论,参与人员:采购、PIE、质量中心经理、研发工程师、研发总监、厂部厂长及其相关人员。 6、异常分类: 6.1 外观不良:表面有划痕、水印、字体不清、表面气泡、砂眼、黑点、缺料、油污、毛刺、变形、色差、氧化及电镀层脱落、标识规格错误、无料号贴纸、无出厂检验报告等。 6.2性能不良:尺寸与图纸不符、适配过大,过小、色温,波长,亮度不符、电压,电流不符等。 7、异常处理方式 7.1将不良品返回供应商进行返工、返修、报废等。

错误处理及调试_教学设计.

《PHP程序设计基础教程》 教学设计 课程名称:PHP程序设计基础课程 授课年级:2014年级 授课学期:2015学年第二学期 教师姓名:陆启军

E_USER_NOTICE ] ) 在上述声明中,第一个参数是错误信息内容,第二个参数是错误类别,默认为E_UESR_NOTICE。 需要注意的是,在使用trigger_error()函数触发错误之前,一定要先使用ini_set()函数让错误显示,否则使用trigger_error()函数无法触发错误。 第二课时 (如何处理错误) 如何处理错误 ?显示错误报告 在实际开发过程中,不可避免的会出现各种各样的错误,为了提高开发效率,PHP语言提供了显示错误的机制,该机制可以控制是否显示错误以及显示错误的级别等。在PHP中实现显示错误的机制有如下两种方式:?修改配置文件 通过直接配置php.ini文件来实现显示错误报告,代码如下所示:error_reporting(E_ALL & ~E_NOTICE); display_errors = on; 上述代码中,error_reporting用于设置错误级别,display_errors用于设置是否显示错误报告。 ?error_reporting()和ini_set()函数 通过PHP语言提供的error_reporting()和ini_set()函数实现显示错误报告,代码如下: 上述代码中,ini_set()函数用来设置错误信息是否显示,error_reporting()函数用于设置错误级别。第2行表示显示除E_NOTICE之外的所有级别错误,第3行表示显示错误信息。 ?die()函数 die()函数可以用来定义输出错误信息,常用于业务逻辑的错误显示,代码如下: die()函数与or运算符的配合使用,代码如下所示: ?记录错误日志 网站已经上线或者正在运行,错误显示出来会影响用户体验,这时就需

xampp phpwind agileone异常解决方法汇总

安装好xampp后 一、mysql无法启动如果原先有安装或者安装过mysql,需要更改如下数据 1、将MYSQL中的my.ini: # basedir = E:\Program Files\MySQL\MySQL Server 5.6 # datadir = E:\Program Files\MySQL\MySQL Server 5.6\data 删了 2、 1.cmd-->regedit 找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL] 原来的:"E:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" MySQL 改为:"E:\Program Files\xampp\mysql\bin\mysqld" MySQL 二、 apache无法启动,端口未被占用(关于端口被占用的可以百度),竟然是因为没有安装在跟目录下,我将XAMPP整个文件夹移出来,到跟目录下就好了! 端口被占用的: 1、用cmd 输入netstat -ano 查看本地端口的80 和433是否被占用,如果被占用找到对应PID ,再到任务管理器里杀掉pid进程 或者去config 》Apache (httpd.conf )//httpd.conf(httpd-ssl.conf)吧端口改为8080 4433

三、agileone登入:将agileone复制到xampp/htdocs下,输入如下网址(我都文件夹是agileone1)http://localhost/agileone1/install/ 如果页面是: agileone安装登陆报错,localhost重定向次数过多 1、找到.htaccess文件 2、修改RewriteEngine 参数为off即可 四、phpwind 5、把phpwind解压缩,得到的文件夹upload文件夹的内容剪切出来放到你安装盘的目录xampp/ htdocs/(重命名为个phpwind文件夹)里面.在浏览器地址框里输入http://localhost/phpwind/insta ll.php进入phpwind的安装界面 五、关于查被占用的端口 输入命令:netstat -ano 看本地地址 查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157(端口号)" 继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口 任务管理器杀进程:

JAVA常见错误处理方法

JAVA常见错误处理方法 JAVA常见错误处理方法 Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。本文特意为大家收集整理了JAVA常见错误处理方法,希望大家喜欢! 原因:Heap内存溢出,意味着Young和Oldgeneration的内存不够。 解决:调整java启动参数-Xms-Xmx来增加Heap内存。 https://www.doczj.com/doc/4112813028.html,ng.OutOfMemoryError:unabletocreatenewnativethrea d 原因:Stack空间不足以创建额外的线程,要么是创建的线程过多,要么是Stack空间确实小了。 解决:由于JVM没有提供参数设置总的stack空间大小,但可以设置单个线程栈的大小;而系统的用户空间一共是3G,除了 Text/Data/BSS/MemoryMapping几个段之外,Heap和Stack空间的总量有限,是此消彼长的。因此遇到这个错误,可以通过两个途径解决:1.通过-Xss启动参数减少单个线程栈大小,这样便能开更多线程(当然不能太小,太小会出现StackOverflowError);2.通过-Xms-Xmx两参数减少Heap大小,将内存让给Stack(前提是保证Heap空间够用)。 https://www.doczj.com/doc/4112813028.html,ng.OutOfMemoryError:PermGenspace 原因:PermanentGeneration空间不足,不能加载额外的类。 解决:调整-XX:PermSize=-XX:MaxPermSize=两个参数来增大PermGen内存。一般情况下,这两个参数不要手动设置,只要设置-Xmx足够大即可,JVM会自行选择合适的PermGen大小。

品质异常处理流程

品质异常处理流程 1.目的 为了使品质异常发生时,处理过程有据可依,使重大品质异常在规定的时间内得到有效改善,防止相同的问题重复发生,降低品质成本,确保产品质量符合要求。 2. 适用范围 适用于公司制程控制。 3. 名词释义 品质异常:因制程中出现了品质问题而导致的异常,也称制程异常。 停机:生产线生产出的产品不符合规定要求时或生产线不具备开机条件而已开机时,作停机处理,并下发《品质异常反馈单》。 4. 职责 检验科负责品质异常的反馈与跟进。 责任部门负责对品质异常进行分析、改善与预防及不良品的处理。 5. 作业流程 品质异常问题分类

异常问题处理流程 5.2.1当出现以上异常情况时,QC迅速对已发现的问题品作好标识并隔离。 5.2.2问题反馈 5.2.2.1发现人员或QC立即向上级或责任部门报告。 5.2.2.2根据本流程的要求填写《品质异常反馈单》并传递到责任部门。 5.2.2.3一般情况发《品质异常反馈单》即可,若某一问题多次发生,或问题较严 重,可能会导致批量不合格或客户重大投诉时。检验科发出《纠正和预防措施处理单》,要求责任部门改善。 5.2.3异常问题处理 5.2.3.1当缺陷不影响产品的性能(上表不需停机的问题),仅外观不良、非关键尺 寸超差时或问题未最终确认时,在得到检验科长级或厂长同意后,不需要停机,可进一步确认或执行在线分选。 5.2.3.2当生产线出现异常时(上表中需停机的问题),相关人员参照本流程的要 求,暂停有问题的机器或工位的操作。 5.2.4停机的时机 5.2.4.1 出现上表中需要停机时,QC直接下达停机指令,即上述表中所致A类问 题,员工/主操/领班应主动停机。 5.2.4.2 出现需要停机时,QC直接下达停机指令,相关部门不执行的,QC领班跟 进处理。即上升为B类问题。 5.2.4.3 出现需要停机时,QC及 QC领班先后要求停机,相关部门仍不执行的, 及时反馈到检验科长,由检验科长跟进处理,即上述的C类问题。 5.2.5纠正行动

如何使用异常处理机制

如何使用异常处理机制 《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.}

打印机错误处理方法

ISSUE: 如果使用PCL6 XL (Enhanced) 驱动程序,HP LaserJet、Color LaserJet 系列打印机打印输出XL 错误页面。 例如: PCL XL Error Subsystem: KERNEL Error: IllegalOperatorSequence Operator: SetColorSpace Position: 52 SOLUTION: 确认打印机运转正常 为了确认打印机运转是否正常,请执行下列步骤: 关闭打印机,然后在打印机背面中断并行电缆、串行电缆或网络数据电缆连接。这样能够确保不会收到来自电脑或网络的信息。启用打印机,然后确认打印机显示屏显示“Ready”字样。 执行下列步骤,利用打印机执行自检打印: 转至打印机。 按下MENU 键,直至打印机显示屏显示“INFORMATION MENU”。 按下Item 键,直至打印机显示屏显示“PRINT MENU MAP”。 按下SELECT 按钮。打印机应会生成打印作业。 NOTE: 如果自检打印页中有模糊字符或符号,或者执行上述步骤之后没有生成自检打印页,则表明打印机可能需要检修。 尝试下列所有临时对策之后,请尝试使用相关的软件程序或文档执行打印。这样将能帮助确定设置变更是否能够产生预期效果。

直接连接打印机与电脑。选用符合IEEE/1284 标准要求的电缆。 执行下列步骤,打印测试页: 点击“开始”,然后点击“设置和打印机”。 右键点击相应的打印机驱动程序。 选择“属性”。 点击“常规”选项卡,然后点击右下角的“Print Test Page”按钮。 如果错误没有得到纠正,请尝试使用其他符合IEEE 1284 标准要求的电缆。如果无法建立直接连接,请为集线器选用其他网线或网络端口。针对指定打印机简化通信选项。利用打印机控制面板关闭“High Speed”和“Advanced Functions”。为了关闭“High Speed”与“Advanced Functions”,请执行下列步骤: 按下MENU 键。 选择“CONFIGURE DEVICE”。 按下I/O MENU,然后禁用“Parallel High Speed”。 按下I/O MENU,然后禁用“Advanced Functions”。 将打印机连接至其他位置,更换并行/USB/网络电缆。避开交换机/集线器(如已配备)。 NOTE: 关闭这些特性将会禁止所有双向通信、降低打印机端口速度以求向下兼容、充分利用状况不佳的数据线直至完全报废。 从MS-DOS 打印文件 为了避免文件卷入Microsoft Windows 环境中可能发生的任何冲突,请执行下列步骤,从MS-DOS 打印文件: 创建一个记事本文件。 打开“命令提示符”。 利用打印机执行FTP 打印。关于如何执行FTP 打印,请参阅文档bpj06165“Using FTP to Print to an HP Jetdirect Print Server”。 NOTE: 能够成功执行打印表示PCLXL 错误与驱动程序无关。

生产异常处理流程

A版 汇签: 制定:审核:批准:修订记录:

1.目的 为了规范产线发生异常时,能及时、准确地反映并能通过相关人员确认、分析、及时解决,确保生产正常进行。 2.适用范围 适用于客户与工厂合作产品之生产线发生的异常现象。 3. 职责 3.1 工厂品质:提出异常问题,确认是否属实。 3.2 工厂工程:负责产线异常分析,找出问题原因,提出改善对策。 3.3 工厂:跟进改善结果及效果确认;对来料进行管控。 3.4 工厂品质:提供异常的最终处理方案,并对改善方案评估/验证;供应商 改善报告回复及监控。 3.5 客户项目、结构、工程:负责结构、软/硬件异常问题的解决。 3.6 客户采购:负责来料异常商务方面的处理。 3.7 客户计划:负责异常发生时总体计划的协调和异常发生产生的工时和物 料的签合。 3.8 质量总监:让步接收最终审批。 4. 异常处理流程 4.1工厂仓库按客户计划要求根据及套料单领取物料安排生产! 4.2产线在生产中发现产品与样板不符、功能缺失、装配出来的成品达不到标 准要求或来料无法使用等现象时,及时上报、工厂品质&工程等相关人员确

认。 4.2 工厂品质确认异常可接受,通知产线继续生产;如确认异常成立则交工厂 工程分析同时开出《生产异常报告》。 4.3 经工厂工程分析,给出初步分析结果,结果分为工艺问题、设计问题、来料问题。 4.4 由工厂工程分析为工艺问题,由工程辅导产线纠正生产工艺,工厂品质 监督确认,产线恢复正常生产。 4.5 经工厂工程初步分析异常属于设计问题,在能力范围内能解决的自行处 理,但需将解决办法知会客户,若无法解决的则书面知会客户品质、项目、结构、计划。由客户计划主导协调客户项目结构分析在30分钟内给出临时处理解决办法,经工厂品质确认合格恢复生产;对于后期的改善对策,由客户品质主导负责协调项目、结构工程等一起实施有效的解决对策并进行验证,得到工厂品质确认方可进行生产安排! 4.6由工厂工程及品质确认异常是来料问题,第一时间以邮件通知客户计划、 品质、采购,并要求客户品质在30分钟内对物料问题给予回复处理意见(临时解决办法),工厂给予相应配合和支持!同时客户品质联系供应商到工厂工厂及时解决,并要求供应商给出不良原因分析及改善报告回复,客户品质对其进行验证,同时要求供应商挑选符合品质标准的物料经品质确认后方可恢复生产。 4.6.1若供应商没在规定时间(原则上要求供应商4小时内)到工厂处理,先 由采购或品质与供应商沟通,如果供应商同意接收工厂工厂挑选并承担其挑选费用和不良物料,产线予以上线生产!

制程异常处理流程

1. 目的 规定当制程出现异常时的处理流程及各相关部门的责任, 使异常能够得到及时解决,确保生产正常 运行。 2. 适用范围 适用于制程出现异常时的处理。 3. 定义: 无。 4. 职责 4. 1各生产车间:当生产过程中制程出现异常时发出《不合格品报告单》通知 IPQC 4. 2品质部IPQC :对制程异常现象进行确认,并通知 QE 或PE 来现场进行原因分析和处理 4. 3品质部QE :对制程异常进行原因分析并确认责任部门,并对责任部门制订的改善对策进行验 证 4. 4工程部PE :对功能及结构性制程异常进行原因分析并确认责任部门 4. 5责任部门:负责制定异常的临时对策和永久对策并实施。 5. 作业程序 5. 1制程异常发出的时机: 5. 1. 1当同一不良现象重复出现且不良率超出备损率时; 5. 2制程异常的发出、确认及通知: 5. 2. 1由车间生产线根据不良现象和事实填写《不合格品报告单》,填写内容包括:订单号、 产品型 号、生产数量、不良数量、不良率、提出部门、提出时间、订单交期、不良现象描述。 经车间主管(经理)审核后给车间IPQC 确认; 5. 2. 2 IPQC 在收到车间发出的《不合格品单》后,对异常现象、不良数量、不良率进行确认, 并将确 认结果填写在“IPQC 确认”栏。如果确认结果与车间填写的内容不相符时,可退回 车间重新填写。 5. 2. 3 IPQC 确认后以电话形式通知以下人员到发生异常的现场进行原因分析: 5. 森一泰电子科技有限公司 作业指导书 制程异常处理作业指导书 2. 3. 1如果是外观异常,电话通知制程 QE 工程师到现场进行原因分析; 2. 3. 2如果是功能和结构性异常,电话通知 QE 工程师和工程部PE 工程师到现场进行 原因分析; 2. 3. 3如果电话联络不到相关产品的 QE 工程师或PE 工程师时应通知其直接上司做出 相应安排。 5. 5.

PHP程序设计习题答案

第1章P H P开篇习题 一、填空题 1.Apache的httpd服务程序使用的是【 80 】端口。 2.在进行软件开发时有两种基本架构,B/S架构和【C/S】架构。 3.URL的英文全称是【Uniform Resource Locator】,中文名称为【统一资源定位符】。 4.【HTTP 】协议是计算机硬件与软件之间数据交换的格式。 5.【HTTP】表示传输数据所使用的协议,【WWW】表示要请求的服务器主机名。 二、判断题 1.使用PHP写好的程序,在Linux和Windows平台上都可以运行。(√) 2.PHP可以支持MySQL数据库,但不支持其它的数据库。(×) 3.PHP有很多流行的MVC框架,这些框架可以使PHP的开发更加快捷。(√) 4.Zend Studio是PHP中常用的IDE(集成开发环境)。(√) 5.进行PHP程序开发时,可以借助软件和工具来提高效率。(√) 三、选择题 1.下列选项中,不是URL地址中所包含的信息是(D )。 A.主机名 B.端口号 C.网络协议 D.软件版本 2.PHP是一种(A)的编程语言。 A.解释型 B.编译型 C. 两者都是 D. 两者都不是 3.PHP是个网站开发中非常流行的脚本语言,其流行的原因不包含(C )。 A.易学 B.易用 C.易调试 D.易扩展 4.PHP与Linux、Apache和MySQL一起共同组成了一个强大的Web应用程序平台,下列选项中 为该平台简称的是(B )。 A. WAMP B. LAMP C. LNMP D. WNMP 5.在下列选项中,哪些不属于PHP的突出特点(B )。 A开源免费 B.开发成本高 C.跨平台性 D.支持多种数据库 四、简答题 1.请简要说明PHP的突出特点是什么? 1.开源免费2跨平台性3.面向对象 4.支持多种数据库 5.快捷性.

keil常见错误及解决办法

查看文章 【转】 KEIL C编译器常见警告与错误信息的解决办法 2010-09-03 16:21 转载自朝阳暮鼓 最终编辑朝阳暮鼓 KEIL C编译器常见警告与错误信息的解决办法 1. Warning 280:’i’:unreferenced local variab le 说明局部变量i 在函数中未作任何的存取操作 解决方法消除函数中i 变量的宣告 2 Warning 206:’Music3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用 解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数 则要写成extern void Music3(void),即作外部宣告 3 Compling :C:\8051\MANN.C Error:318:can’t open file ‘beep.h’ 说明在编译 C:\8051\MANN.C 程序过程中由于main.c 用了指令#include “beep.h”,但却找不到所致 解决方法编写一个beep.h 的包含档并存入到c:\8051 的工作目录中 4 Compling:C:\8051\LED.C Error 237:’LedOn’:function already has a body 说明LedOn( )函数名称重复定义即有两个以上一样的函数名称 解决方法修正其中的一个函数名称使得函数名称都是独立的 5 ***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAYX1MS?DELAY 说明DelayX1ms( )函数未被其它函数调用也会占用程序记忆体空间 解决方法去掉 DelayX1ms( )函数或利用条件编译#if …..#endif,可保留该函数并不编译 6 ***WARNING 6 :XDATA SPACE MEMORY OVERLAP FROM : 0025H TO: 0025H 说明外部资料ROM 的0025H 重复定义地址 解决方法外部资料ROM 的定义如下 Pdata unsigned char XFR_ADC _at_0x25 其中XFR_ADC 变量的名称为0x25,请检查是 否有其它的变量名称也是定义在0x25 处并修正它

ORCALE异常错误处理

1.ORACLE预定义常见的异常错误

2.ORACLE用户定义的异常处理 调用DBMS_STANDARD(ORACLE提供的包)包所定义RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息 RAISE_APPLICATION_ERROR的语法如下: RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]); 这里的error_number是从–20,000 到–20,999 之间的参数, error_message是相应的提示信息(< 2048 字节), keep_errors为可选,如果keep_errors =TRUE ,则新错误将被添加到已经引发的错误列表中。如果keep_errors=FALSE(缺省),则新错误将替换当前的错误列表。 3.捕获ORACLE用户定义的异常处理 首先,在存储过程里声明以下参数: empno_remaining EXCEPTION; PRAGMA EXCEPTION_INIT(empno_remaining, error_number); error_number是调用的接口所自定义的异常参数 然后通过以下的格式捕获异常

EXCEPTION WHEN empno_remaining THEN --详细处理代码— 4.ORCALE注意点 ORACLE提供的所定义DBMS_UTILITY.format_error_backtrace过程,其主要作用是捕获异常 发生所在行,DBMS_UTILITY.format_error_backtrace 跟错误信息相拼是放在 RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors])中的error_message,在PICC系统中最好把DBMS_UTILITY.format_error_backtrace放在最后,否则放在的其后面是信息 在PICC错误页面是无法显示的。 5.系统中ORCALE异常错误处理 PICC中自定义异常已通过P_ERROR(I_TYPE_ID number, I_MSG varchar2)接口进行了封装 其主要的代码 create or replace procedure P_ERROR(I_TYPE_ID number, I_MSG varchar2) is begin raise_application_error(-20100, I_TYPE_ID || ',' || I_MSG); end P_ERROR; 所以I_TYPE_ID 并不是上述的error_number,I_TYPE_ID是t_string_resource中的信息主键, 对于P_ERROR封装的错误信息在ExceptionFactory.java中的parse()方法中进行了详细的解码。 P_ERROR 封装的异常错误码都是-20100 不具备特殊性,所以在需求中遇到特殊的ORCALE异常错误处理,需要我们通过原始的raise_application_error来自定义异常,当要注意在 ExceptionFactory.java是否需要进行特殊的处理。

相关主题
文本预览
相关文档 最新文档