当前位置:文档之家› c++异常处理习题答案

c++异常处理习题答案

c++异常处理习题答案
c++异常处理习题答案

1. 概念填空题

1.1C++程序将可能发生异常的程序块放在try中,紧跟其后可放置若干个对应的catch,在前面所说的块中或块所调用的函数中应该有对应的throw,由它在不正常时抛出异常,如与某一条catch类型相匹配,则执行该语句。该语句执行完之后,如未退出程序,则执行catch后续语句。如没有匹配的语句,则交给C++标准库中的termanite处理。1.2 throw表达式的行为有些像函数的函数调用,而catch子句则有些像函数的函数定义。函数的调用和异常处理的主要区别在于:建立函数调用所需的信息在编译时已经获得,而异常处理机制要求运行时的支撑。对于函数,编译器知道在哪个调用点上函数被真正调用;而对于异常处理,异常是随机发生的,并沿调用链逆向查找异常处理子句,这与运行时的多态是不一样的。

2.简答题

2.1 C++中的异常处理机制意义,作用是什么?

2.2 当在try块中抛出异常后,程序最后是否回到try块中继续执行后面的语句?

2.3 什么叫抛出异常? catch可以获取什么异常参数?是根据异常参数的类型还是根据参数的值处理异常?请编写测试程序验证。

2.4 为什么C++要求资源的取得放在构造函数中,而资源的释放在析构函数中?

3.选择题

3.l 下列关于异常的叙述错误的是(A)。

A.编译错属于异常,可以抛出

B.运行错属于异常

C.硬件故障也可当异常抛出

D.只要是编程者认为是异常的都可当异常抛出

3.2下列叙述错误的是()。

A.throw语句须书写在时语句块中

B.throw语句必须在try语句块中直接运行或通过调用函数运行

C.一个程序中可以有try语句而没有throw语句

D.throw语句抛出的异常可以不被捕获

3.3 关于函数声明float fun(int a,int b)throw,下列叙述正确的是()。

A.表明函数抛出float类型异常

B.表明函数抛出任何类型异常

C.表明函数不抛出任何类型异常

D.表明函数实际抛出的异常

3.4下列叙述错误的是()。

A.catch(…)语句可捕获所有类型的异常

B.一个try语句可以有多个catch语句

C.catch(…)语句可以放在catch语句组的中间

D.程序中try语句与catch语句是一个整体,缺一不可

3.5下列程序运行结果为(A)。

#include

using namespace std;

class S{

public:

~S( ){cout<<”S”<<”\t”; }

};

char fun0() {

S s1;

throw(‘T’);

return ‘0’;

}

void main(){

try{

cout<

catch(char c) {

cout<

}

A.S T B.O S T C.O T D.T

4.写出程序运行结果

4.1#include

using namespace std;

int a[10]={1,2, 3, 4, 5, 6, 7, 8, 9, 10};

int fun( int i);

void main()

{int i ,s=0;

for( i=0;i<=10;i++)

{ try

{ s=s+fun(i);}

catch(int)

{cout<<”数组下标越界!”<

}

cout<<"s=”<

}

int fun( int i)

{if(i>=10)

throw i;

return a[i];

}

数组下标越界!

S=55

4.2 #include

using namespace std;

void f();

class T

{public:

T( )

{cout<<"constructor"<

try

{throw "exception";}

catch( char*)

{cout<<"exception”<

throw "exception";

}

~T( ) {cout<<"destructor";}

};

void main()

{cout<<"main function”<< endl;

try{ f( ); }

catch( char *)

{ cout<<"exception2"<

cout<<"main function”<

}

void f( )

{ T t; }

main function

constructor

exception

exception2

main function

5.程序设计题

5.1以String类为例,在String类的构造函数中使用new分配内存。如果操作不成功,则用try语句触发一个char类型异常,用catch语句捕获该异常。同时将异常处理机制与其他处理方式对内存分配失败这一异常进行处理对比,体会异常处理机制的优点。

#include

#include

using namespace std;

class String{

public:

String(const char*);

String(const String&);

~String();

void ShowStr(){cout<

private:

char *sPtr;

};

String::String(const char *s){

sPtr=new char[strlen(s)+1];

if(sPtr==NULL)throw("Constructor abnormal");

strcpy(sPtr,s);

}

String::String(const String ©){

sPtr=new char[strlen(copy.sPtr)+1];

if(sPtr==NULL)throw("Copy constructor abnormal");

strcpy(sPtr,copy.sPtr);

}

String::~String(){

delete[] sPtr;

}

int main(){

try{

String str1("This is C++");

String str2(str1);

}

catch(char* c){

cout<

}

return 0;

}

5.2在5.1的基础上,重载数组下标操作符[],使之具有判断与处理下标越界功能。解法一

#include

#include

using namespace std;

class String{

public:

String(const char*);

String(const String&);

~String();

char operator[](int);

void ShowStr(){cout<

private:

char *sPtr;

};

String::String(const char *s){

sPtr=new char[strlen(s)+1];

if(sPtr==NULL)throw("Constructor abnormal");

strcpy(sPtr,s);

}

String::String(const String ©){

sPtr=new char[strlen(copy.sPtr)+1];

if(sPtr==NULL)throw("Copy constructor abnormal");

strcpy(sPtr,copy.sPtr);

}

String::~String(){

delete[] sPtr;

}

char String::operator[](int subscript){

if(subscript<0 || subscript>strlen(sPtr))

throw(subscript);

return *(sPtr+subscript);

}

int main(){

try{

String str1("This is C++");

String str2(str1);

cout<

cout<

}

catch(char* c){

cout<

}

catch(int i){

cout<

}

return 0;

}

解法二

#include

#include

#include

using namespace std;

class String{

public:

String(const char*);

String(const String&);

~String();

char operator[](int);

void ShowStr(){cout<

private:

char *sPtr;

};

String::String(const char *s){

sPtr=new char[strlen(s)+1];

if(sPtr==NULL)throw("Constructor abnormal");

strcpy(sPtr,s);

}

String::String(const String ©){

sPtr=new char[strlen(copy.sPtr)+1];

if(sPtr==NULL)throw("Copy constructor abnormal");

strcpy(sPtr,copy.sPtr);

}

String::~String(){

delete[] sPtr;

}

char String::operator[](int subscript){

if(subscript<0 || subscript>strlen(sPtr)){

char* out_of_index="Out of range in index of array";

throw(out_of_index);

}

return *(sPtr+subscript);

}

int main(){

try{

String str1("This is C++");

String str2(str1);

cout<

cout<

}

catch(char* c){

cout<

}

catch(out_of_range &excp){

cout<

return -1;

}

return 0;

}

5.3定义一个异常类Cexception,有成员函数reason(),用来显示异常的类型。定义一个函数fun1()触发异常,在主函数try模块中调用fun1(),在catch模块中捕获异常,观察程序执行流程。

#include

using namespace std;

enum{EXCEPTION_1 = 1, EXCEPTION_2, EXCEPTION_3};

class CException{

public:

CException(int nReason) { m_nReason = nReason; }

~CException() {}

void Reason() { cout <<"Exception:"<< m_nReason << endl; }

private:

int m_nReason;

};

void fn1(){

throw new CException(EXCEPTION_1); }

int main(){

try{

fn1();

}

catch(CException* e){

e->Reason();

}

return 0;

}

java异常处理作业

Java异常处理作业 孙月巧 1、参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。【提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试】 package November; import java.util.Scanner; public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("请输入一个字符串:"); try{ Scanner reader=new Scanner(System.in); String str = reader.nextLine(); System.out.println("第四个字符为 " + str.charAt(3)); int aa = Integer.parseInt(str); System.out.println("平方为 " + aa * aa); } catch(StringIndexOutOfBoundsException e){ System.out.println("您输入的数值下标越界"); } catch(NumberFormatException nfe){ System.out.println("您输入的不是数字"); } } } 2、从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 package November; import java.util.Scanner; public class Test2 { public static void main(String[] args) { System.out.println("请输入五个整数:"); try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]); int d = Integer.parseInt(args[3]); int e = Integer.parseInt(args[4]);

异常处理练习题

异常处理练习题 一、选择题 中用来抛出异常的关键字是 A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是 A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都不对 3.()类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 语言中,下列哪一子句是异常处理的出口 A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都不对 5.下列程序的执行,说法正确的是 public class MultiCatch { public static void main(String args[]) { try { int a=; int b=42/a; int c[]={1}; c[42]=99; } catch(ArithmeticException e) { 除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { 数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42” D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是 class ExMulti { static void procedure() { try {

int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { 数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=; int b=42/a; } catch(ArithmeticException e) { 除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessException { procedure”); throw____new___IllegalAccessException(“demo”); } public static void main(String args[]) { try { procedure(); } ___catch (IllegalAccessException e)________ { 捕获:”+e); } } 8.对于catch子句的排列,下列哪种是正确的( ) A、父类在先,子类在后 B、子类在先,父类在后

数据库异常处理答案

. 一、 一、实验/实习过程 实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。 package Package1; public class除数0 { public static void main(String args[]){ try{ int a=10; int b=0; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } } 实验题2在一个类的静态方法methodOne()方法内使用throw 产生

ArithmeticException异常,使用throws子句抛出methodOne()的异常,在main方法中捕获处理ArithmeticException异常。 package Package1; public class抛出异常 { static void methodOne() throws ArithmeticException{ System.out.println("在methodOne中"); throw new ArithmeticException("除数为0"); } public static void main(String args[]){ try{ int a=10; int b=0; int c=1; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } }

特殊作业安全考试试题(答案)

重庆睿哲制药有限责任公司 特殊作业安全考试试卷 姓名:部门:得分: 一、填空题(每空1分,共35分): 1、动火作业:能直接或间接产生明火的工艺设置以外的可能产生火焰、火花和炽热表面的非常规作业非常规作业,动火作业分为二级动火作业、一级动火作业和特殊动火作业。 2、凡处于GB50016-2006《建筑设计防火规范》规定的甲、乙类区域的动火作业,对于用火点周围有可能泄漏易燃、可燃物料的设备,应采取有效的空间隔离措施。动火期间距动火点30m内不得排放各类可燃气体;距动火点15 m内不得排放各类可燃液体;不得在动火点10 m范围内及用火点下方同时进行可燃溶剂清洗或喷漆等作业。 3、动火分析合格判定方法:当被测气体或蒸气的爆炸下限大于等于4 %时,其被测浓度应不大于0.5 %(体积百分数);当被测气体或蒸气的爆炸下限小子4 %时,其被测浓度应不大于0.2 %(体积百分数)。 4、使用气焊、气割动火作业时,乙炔瓶应直立放置;氧气瓶与乙炔气瓶间距不应小于5 m,二者与动火作业地点不应小于10 m,并不得在烈日下曝晒。 5、取样与动火间隔不得超过30min,如超过此间隔或动火作业中断时间超过60 min,应重新取样分析。特殊动火作业期间还应随时进行监测。 6、凡距坠落高度基准面 2 m 及其以上,有可能坠落的高处进行的作业称为高处作业。作业高度在2m ≤h≤5m 时,称为一级高处作业。作业高度在5m30m 以上时,称为特级高处作业。 7、雨天和雪天进行高处作业时,应采取可靠的防滑、防寒和防坠落措施。 8、受限空间照明电压应小于等于36V ,在潮湿容器、狭小容器内作业电压应小于等于12 V。受限空间出入口应保持畅通,不得堵塞出入口。 9、高处作业“三宝”包括:安全带、安全帽、安全网。作业人员在作业中应正确使用防坠落用品与登高器具、设备,安全带不得低挂高用。系安全带后应检查扣环是否扣牢。10、吊装作业按吊装重物的质量分为三级:一级吊装作业吊装重物的质量大于100 t;二级吊装作业吊装重物的质量大于等于40 t至小于等于100 t;三级吊装作业吊装重物的质量小于40 t。 11、《受限空间作业证》有效期不应超过24 h。 二、判断题(每题1分,共18分): 1、加盲板的位置一般在来料阀前部法兰处,盲板两侧均应加垫片并用螺栓紧固,并做到无泄漏。(√) 2、高处作业用的脚手架的搭设应符合安全要求,两端应捆绑牢固。作业前,应检查所用的安全设施是否坚固、牢靠。(√) 3、按照《化学品生产单位特殊作业安全管理规范》(GB30871-214)规定:遇节日、假日或其它特殊情况时,动火作业应升级管理。(√) 4、可以用吊钩缠绕重物,但不得将不同种类或不同规格的索具混在一起使用。( ×) 5、进入受限空间、高处等进行动火作业时,还须执行化学品生产单位受限空间作业安全规范和化学品生产单位高处作业安全规范的规定。(√) 6、作业人员必须服从作业监护人的指挥,如发现作业人员不按照规范操作时,应停止作业并撤出受限空间。( √) 7、施救人员必须熟知救援环境、救援技能和方法。不具备救援条件,或不能保证施救人员的生命安全时,禁止盲目施救。( √) 8、休息时,为方便吊装作业,可以将吊物、吊笼、吊具和吊索吊在空中。( ×) 9、受限空间的作业一旦完成,所有作业者及所携带的设备和物品均已撤离,或者在受限空间及其附近发生了许可所不容许的情况,要终止进入并注销许可。( √) 10、动火作业超过有效期限,应重新办理《动火作业证》.( √) 11、容积较大的受限空间采样点,应采取上、中、下各部位取样。( √) 12、为防止受限空间内作业人员发生因缺氧窒息死亡事故的发生,可以在受限空间外用氧气瓶内的氧气

(完整word版)异常处理_参考答案

一、【必做题】 1.写出以下程序的运行结果。 Static double average(int[] a) throws NullPointerException { Try { Int sum = 0; for (int I = 0; I < a.length; i++) { Sum += a[i]; } Return (((double) sum) / a.length); } catch (NullPointerException e) { System.out.println(“NullPointerException”); throw e; } } Public static void main(String args[]) { Try { Int a[] = null; average(a); } catch (NullPointerException e ) { System.out.println(“NullPointerException”); } System.out.println(“OK”); } NullPointerException NullPointerException OK 2.编写一个方法,比较两个字符串。假如其中一个字符串为空,会产生NullPointerException 异常,在方法声明中通告该异常,并在适当时候触发异常,然后编写一个程序捕获该异常。public class Main { public static void test(String s,String a ) throws NullPointerException { if(s==null||a == null) { throw new NullPointerException(); }else{ } } public static void main(String[] args) { // TODO Auto-generated method stub

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;

数据库异常处理答案

、实验/实习过程 实验题 1在程序中产生一个ArithmeticException 类型被0除的异常, 并用catch 语句捕获这个异常。最后通过 ArithmeticException 类的对象 e 的方法getMessage 给出异常的具体类型并显示出来 [j'.除数U j av?風 package Package1; public? class 除数匚i { puljJ.ic static: void tnain (Str args [ ] ) { try : int 3=10; int b=D; System- on t . pr intln ( n 输出结果肯:fr 4-a/b); System- t . pr ("除數不能为□**+&. gets Message ; E Console X 事氏囲 ^t^rminated)-際數。[java A.ppli csiti on J C : S.Pr ograim F i 1 e E V J avaSt j ireB \b i IL \ J avaw . es:e ?C13-10-25 package Packagel; catch (ArithmetlcExcEption e)( 除数不能为叩 by sexo public class 除数0 { public static void mai n(Stri ng args[]){ try { int a=10; int b=0; System. out .println( } catch (ArithmeticException e){ System. out .println( } } 输岀结果为:"+a/b); "除数不能为 0" +e.getMessage()); }

C++异常处理机制全解

C++异常处理机制全解 ▌异常处理(Exception handling) ●返回一个错误码进行异常处理(C语言): 例: boolfunc(float a, float b, float& c){ if(b==0){ return false; } c=a/b; return true; } int main() { float a=10; float b=0; float c=0; bool result=func(a, b, c); if(!result){ cout<<"The func fails!"<

int main() { float a=10; float b=0; float c=0; try{ //测试条件; func(a, b, c); //func1(); //func2(); } catch(const char* str){ //捕获异常信息; cout<

数据库异常处理答案

一、实验/实习过程 实验题1在程序中产生一个ArithmeticException类型被0除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e 的方法getMessage给出异常的具体类型并显示出来。 package Package1; public class除数0 { public static void main(String args[]){ try{ int a=10; int b=0; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } } 实验题2在一个类的静态方法methodOne()方法内使用throw 产生ArithmeticException异常,使用throws子句抛出methodOne()的异常,

在main方法中捕获处理ArithmeticException异常。 package Package1; public class抛出异常 { static void methodOne() throws ArithmeticException{ System.out.println("在methodOne中"); throw new ArithmeticException("除数为0"); } public static void main(String args[]){ try{ int a=10; int b=0; int c=1; System.out.println("输出结果为:"+a/b); } catch(ArithmeticException e){ System.out.println("除数不能为0"+e.getMessage()); } } }

C 中异常处理的语法 try catch throw - 大漠一抹云 樊书林 - 博客园

C 中异常处理的语法try catch throw - 大漠一抹云樊书林 - 博客园 C++中异常处理的语法。 关键字 1、try 2、catch 3、throw 其中关键字try表示定义一个受到监控、受到保护的程序代码块;关键字catch与try遥相呼应,定义当try block(受监控的程序块)出现异常时,错误处理的程序模块,并且每个catch block都带一个参数(类似于函数定义时的数那样),这个参数的数据类型用于异常对象的数据类型进行匹配;而throw 则是检测到一个异常错误发生后向 外抛出一个异常事件,通知对应的catch程序块执行对应的错误处理。 语法

1、还是给一个例子吧!如下: int main() { cout << "In main." << endl; //定义一个try block,它是用一对花括号{}所括起来的块作用域的代码块 try { cout << "在try block 中, 准备抛出一个异常." << endl; //这里抛出一个异常(其中异常对象的数据类型是int,值为1) //由于在try block中的代码是受到监控保护的,所以抛出异常后,程序的 //控制流便转到随后的catch block中 throw 1; cout << "在try block 中, 由于前面抛出了一个异常,因此这里的代码是不会得以执行到的" << endl; } //这里必须相对应地,至少定义一个catch block,同样

它也是用花括号括起来的 catch( int& value ) { cout << "在catch block 中, 处理异常错误。异常对象value的值为:"<< value << endl; } cout << "Back in main. Execution resumes here." << endl; return 0; } 2、语法很简单吧!的确如此。另外一个try block可以有多个对应的catch block,可为什么要多个catch block呢?这是因为每个catch block匹配一种类型的异常错误对象的处理,多个catch block呢就可以针对不同的异常错误类型分别处理。毕竟异常错误也是分级别的呀!有致命的、有一般的、有警告的,甚至还有的只是事件通知。例子如下: int main() {

华师网络学院作业答案-Java语言程序设计判断题

Java对事件的处理是采用委托方式进行的,即将需要进行事件处理的组件委托给指定的事件处理器进行处理。 答案:正确 Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。 答案:正确 类的修饰符有静态修饰符static、最终修饰符final、易失修饰符volatile和过度修饰符transient。答案:错误 子类拥有的成员数目大于等于父类拥有的成员数目。 答案:错误 Container类的add()方法将GUI组件添加到容器中。 答案:正确 Frame,Panel,Apple,Button 4种组件都属于容器组件。 答案:错误 在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。 答案:错误 在Java的方法中定义一个常量要用const关键字。 答案:错误 一个程序里有且只能有一个公共类,它就是主类。 答案:正确 最终类不能派生子类。最终方法不能被覆盖。 答案:正确 在Applet中可以调用它的drawImage()方法直接画出一幅图像。 答案:错误 一个复选按钮实现的是“二选一”的结构;一个单选按钮实现的是“多选一”的结构。 答案:正确 当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。 答案:正确 final类中的属性和方法都必须被final修饰符修饰。 答案:错误 接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有常量和抽象方法。 答案:正确 新创建的Frame视窗对象,会自动显示在屏幕上。 答案:错误

applet可以运行在浏览器中。 答案:正确 Java源程序文件应以.java为后缀名保存,文件内包含几个类的定义就编译生成几个对应的字节码文件。 答案:正确 类头定义主要说明类的名字、父类名和接口名。 答案:错误 为了提高效率,Java中对多次出现的用双引号括起来的字符串字面量只存储一个对象。 答案:正确 Java的各种数据类型所占用的内存长度与具体软硬件环境有关。 答案:错误 有的类定义时可以不定义构造函数,所以构造函数不是必须的。 答案:错误 在Java的方法中定义一个常量要用final关键字。 答案:正确 一个Java类可以有多个父类。 答案:错误 在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若多个catch语句中的参数类型有继承关系,应该将父类放在前面的catch语句中,子类放在后面的catch语句中。 答案:错误 Applet和TextField都属于容器组件。 答案:错误 创建新的类对象使用关键字new,回收无用的类对象使用关键字free。 答案:错误 因为Java不支持多重继承,所以定义类时implements关键字后面只能说明一个接口名。 答案:错误 Applet可以在客户端的主机上创建新文件。 答案:错误 类及其属性、方法可以同时有一个以上的修饰符来修饰。 答案:正确 一个catch块也可以区分处理多个不同类型的异常,只要它们都是该catch块异常参数的子类或其本身。答案:正确 Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。 答案:错误

java异常处理试题及答案

异常处理练习题 一、选择题 1.java中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 4.java语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch { public static void main(String args[]) { try { int a=args.length; int b=42/a; int c[]={1}; c[42]=99; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42”

D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D) class ExMulti { static void procedure() { try { int c[]={1}; c[42]=99; } catch(ArrayIndexOutOfBoundsException e) { System.out.println(“数组超越界限异常:”+e); } } public static void main(String args[]) { try { procedure(); int a=args.length; int b=42/a; System.out.println(“b=”+b); } catch(ArithmeticException e) { System.out.println(“除0异常:”+e); } } } A、程序只输出第12行的异常信息 B、程序只输出第26行的异常信息 C、程序将不输出异常信息 D、程序将输出第12行和第26行的异常信息 7.下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。class TrowsDemo { static void procedure() throws IllegalAccessExcepton { System.out.println(“inside procedure”); throw__new_____IllegalAccessException(“demo”);

异常处理

异常处理: (1) #include void main( ) { try { int a=8; double b=8.8; throw a Class exception { private: char *ch; Public: Exception(char *m) { ch=m; } V oid print( ) { cerr< Class exception { private: char *ch; Public: Exception(char *m) { ch=m; } V oid print( ) { cerr<

java异常处理试题及答案

j a v a异常处理试题及答 案 This model paper was revised by the Standardization Office on December 10, 2020

异常处理练习题 一、选择题 中用来抛出异常的关键字是 (C) A、try B、catch C、throw D、finally 2.关于异常,下列说法正确的是(A) A、异常是一种对象 B、一旦程序运行,异常将被创建 C、为了保证程序运行速度,要尽量避免异常控制 D、以上说法都丌对 3.(A)类是所有异常类的父类。 A、Throwable B、Error C、Exception D、AWTError 语言中,下列哪一子句是异常处理的出口(C) A、try{…}子句 B、catch{…}子句 C、finally{…}子句 D、以上说法都丌对 5.下列程序的执行,说法错误的是 (C) public class MultiCatch

{ public static void main(String args[]) { try { int a=; int b=42/a; int c[]={1}; c[42]=99; } catch(ArithmeticException e) { 除0异常:”+e); } catch(ArrayIndexOutOfBoundsException e) {

数组超越边界异常:”+e); } } } A、程序将输出第15行的异常信息 B、程序第10行出错 C、程序将输出“b=42” D、程序将输出第15和19行的异常信息 6.下列程序的执行,说法正确的是(D)class ExMulti { static void procedure() { try { int c[]={1};

特殊作业试题100道答案33752

化学品生产单位特殊作业安全规范(GB30871-2014)知识竞赛试题 (每题1分,共100分) 1. 下列作业中不需要办理动火作业许可证的是(A ): A. 化验室中的电炉加热作业; B. 乙炔气柜附近使用砂轮作业; C. 氨合成装置区内进行气割作业; D. 汽油罐区进行焊接作业。 2. 当被测气体或蒸气的爆炸下限大于等于4%时,动火分析的合格标准是:其被测浓度应不大于( A )。 A. 0.5%(体积百分数); B. 0.2%(体积百分数); C. 2%(体积百分数); D. 5%(体积百分数)。 3. 在500m3的甲醇储罐内中上部位进行动火作业,应对( D )进行监测分析。 A. 上部; B. 中部; C. 下部; D. 以上所有部位均需分析。 4.( B )天气,原则上禁止露天动火作业。 A. 四级风以上(含四级); B. 五级风以上(含五级); C. 六级风以上(含六级); D. 七级风以上(含七级)。 5. 5月25日,某地六级大风,该地一企业甲醇精馏装置区域内冷凝器循环冷却水管线破裂,需要动火,以下说法正确的是(B )。 A. 有监护人在就可以动火; B. 可以动火,但应升级管理; C. 只要车间主任签字即可动火; D. 环境化验分析合格即可动火。 6. 作业中断时间超过( C ),应重新分析,每日动火前均应进行动火分析;特殊动火作业期间应随时进行监测; A. 30min; B. 45min; C. 60min; D. 无限制。 7. 在生产运行状态下的易燃易爆生产装置、输送管道、储罐、容器等部位上进行的动火作业,是( A )。 A. 特殊动火作业; B. 一级动火作业;

异常处理及停线作业办法

文件编号:SCTQC- 版本: 发行日期: 机密等级:一般 核准: 审核: 制定: 贾友艳 目的 为控制因异常而造成质量,交期问题,将损失降低至最小程度,确保满足客户的质量和交期。 范围 适用于本厂工序异常或出货检测异常的控制。 定义

异常:符合以下条件之一的称之为异常,导致停线的异常有: 3.1.1 影响生产绩效导致延误客户交期; 3.1.2 重大品质问题; 3.1.3 不良率在3%以上; 停线:由于异常的发生需要停止生产进行改善的作业,符合以下条件之一者3.2.1由判定需要停止生产的; 3.2.2 FAI不过; 3.2.3 材料不正确; 3.2.4 ECN变更未执行 程序流程

程序内容 生产停线的异常规定 5.1.1印刷 5.1.1.1当IPQC首件测试电阻变化率时如发现1PCS附着性,硬度和绝缘不良时,则立即停线。 5.1.1.2当3PCS电阻超出规格,且后续生产无法调试在规格内,或呈现不稳定状态时,立即停线。 5.1.1.3当IPQC巡检发现同一处外观不良超过15PCS时,经生产改善后仍有同样异常立即停线。 5.1.2冲贴发现同一类型不良连续10PCS(含)以上时,经改善后仍有同样异常则立即停线。 5.1.3冲形站检查时,外形及尺寸有1PCS外形与样品不符或连续4PCS尺寸超出公差时,立即停线。 5.1.4ATE测试,三片测试 5.1.4.1 IPQC抽检已测之半成品,若发现功能不良1PCS(含)以上时,经重新测试后抽检仍发现有不良时立即停线; 5.1.4.2 IPQC巡检发现机器参数不对时,经改善后仍发现有同类异常时立即停线。 5.1.5其它必须停线的异常有:FAI不过,材料不正确,ECN变更未执行,影响生产

特殊作业安全考试试卷及答案【最新版】

特殊作业安全考试试卷及答案 姓名:部门:得分: 一、填空题(每空1分,共35分): 1、动火作业:能直接或间接产生明火的工艺设置以外的可能产生火焰、火花和炽热表面的非常规作业非常规作业,动火作业分为二级动火作业、一级动火作业和特殊动火作业。 2、凡处于GB50016-2006《建筑设计防火规范》规定的甲、乙类区域的动火作业,对于用火点周围有可能泄漏易燃、可燃物料的设备,应采取有效的空间隔离措施。动火期间距动火点30 m内不得排放各类可燃气体;距动火点15 m内不得排放各类可燃液体;不得在动火点10 m范围内及用火点下方同时进行可燃溶剂清洗或喷漆等作业。 3、动火分析合格判定方法:当被测气体或蒸气的爆炸下限大于等于4 %时,其被测浓度应不大于0.5%(体积百分数);当被测气体或蒸气的爆炸下限小子4 %时,其被测浓度应不大于0.2 %(体积百分数)。 4、使用气焊、气割动火作业时,乙炔瓶应直立放置;氧气瓶与乙炔气瓶间距不应小于5 m,二者与动火作业地点不应小于10 m,并不

得在烈日下曝晒。 5、取样与动火间隔不得超过30min,如超过此间隔或动火作业中断时间超过60 min,应重新取样分析。特殊动火作业期间还应随时进行监测。 6、凡距坠落高度基准面2 m 及其以上,有可能坠落的高处进行的作业称为高处作业。作业高度在2m ≤h≤5m时,称为一级高处作业。作业高度在5m 30m 以上时,称为特级高处作业。 7、雨天和雪天进行高处作业时,应采取可靠的防滑、防寒和防坠落措施。 8、受限空间照明电压应小于等于36V ,在潮湿容器、狭小容器内作业电压应小于等于12 V。受限空间出入口应保持畅通,不得堵塞出入口。 9、高处作业“三宝”包括:安全带、安全帽、安全网。作业人员在作业中应正确使用防坠落用品与登高器具、设备,安全带不得低挂高用。系安全带后应检查扣环是否扣牢。 10、吊装作业按吊装重物的质量分为三级:一级吊装作业吊装重

C异常处理实现(精)

C异常处理实现: setjmp和longjmp 此文为internet上选摘,过后我会用自己的理解补充此文。 ------------ 将对setjmp与longjmp的具体使用方法和适用的场合,进行一个非常全面的阐述。 另外请特别注意,setjmp函数与longjmp函数总是组合起来使用,它们是紧密相关的一对操作,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,才能按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 与goto语句的作用类似,它能实现本地的跳转 这种情况容易理解,不过还是列举出一个示例程序吧!如下: void main( void ) { int jmpret; jmpret = setjmp( mark ); if( jmpret == 0 ) { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(1) longjmp(mark, 1); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(2) longjmp(mark, 2); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(-1) longjmp(mark, -1); // 其它代码的执行 } else { // 错误处理模块 switch (jmpret) { case 1: printf( "Error 1"n");

break; case 2: printf( "Error 2"n"); break; case 3: printf( "Error 3"n"); break; default : printf( "Unknown Error"); break; } exit(0); } return; } 上面的例程非常地简单,其中程序中使用到了异常处理的机制,这使得程序的代码非常紧凑、清晰,易于理解。在程序运行过程中,当异常情况出现后,控制流是进行了一个本地跳转(进入到异常处理的代码模块,是在同一个函数的内部),这种情况其实也可以用goto语句来予以很好的实现,但是,显然setjmp与longjmp的方式,更为严谨一些,也更为友善。程序的执行流如图17-1所示。

关于C++中的异常处理使用方法与技巧

1关于异常处理 1.1为什么要抛出异常 抛出异常的好处一是可以不干扰正常的返回值,另一个是调用者必须处理异常,而不像以前c语言返回一个整数型的错误码,调用者往往将它忽略了。 C++的异常处理确保当程序的执行流程离开一个作用域的时候,对于属于这个作用域的所有由构造函数建立起来的对象,它们的析构函数一定会被调用。 1.2捕获所有异常 有时候,程序员可能希望创建一个异常处理器,使其能够捕获所有类型的异常。用省略号代替异常处理器的参数列表就可以实现这一点: 由于省略号异常处理器能够捕获任何类型的异常,所以最好将它放在异常处理器列表的最后,从而避免架空它后面的异常处理器。 省略号异常处理器不允许接受任何参数,所以无法得到任何有关异常的信息,也无法知道异常的类型。它是一个“全能捕获者”。这种catch子句经常用于清理资源并重新抛出所捕获的异常。 1.3重新抛出异常 当需要释放某些资源时,例如网络连接或位于堆上的内存需要释放时,通常希望重新抛出一个异常。(详见本章后面的“资源管理”一节。)如果发生了异常,读者不必关心到底

是什么错误导致了异常的发生——只需要关闭以前打开的一个连接。此后,读者希望在某些更接近用户的语境(也就是说,在调用链中的更高层次)中对异常进行处理。在这种情况下,省略号异常处理器正符合这种的要求。这种处理方法,可以捕获所有异常,清理相关资源,然后重新抛出该异常,以使得其他地方的异常处理器能够处理该异常。在一个异常处理器内部,使 用不带参数的throw语句可以重新抛出异常: 与同一个try块相关的随后的catch子句仍然会被忽略—throw子句把这个异常传递给 位于更高一层语境中的异常处理器。另外,这个异常对象的所有信息都会保留,所以位于更高层语境中的捕获特定类型异常的异常处理器能够获取这个对象包含的所有信息。 1.4构造函数中的异常 C++规定构造函数抛出异常之后,对象将不被创建,析构函数也不会被执行,但已经创建成功的部分(比如一个类成员变量)会被部分逆序析构,不会产生内存泄漏。但有些资源需要在抛出异常前自己清理掉,比如打开成功的一个文件,最好关闭掉再抛出异常(虽然系统也会把这个资源回收),因为抛出异常之后析构函数不会被执行了。 (1)C++中通知对象构造失败的唯一方法那就是在构造函数中抛出异常;(这句话并不是说我们只有这个方法才能让上层知道构造函数失败,虽然构造函数没有返回值,我们完全可以在构造函数中传入一个引用值,然后在里面设置状态,运行完构造函数之后任然可以知道是否失败,但这种情况下面对象其实还是被构造出来的,只是里面有资源分配失败而已,并且析构函数还是会执行。这和我们构造失败不生成对象的初衷不符。)

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