• 【C/C++学院】0831-类与对象的异常/面试100题1-100


    类与对象的异常

    Cpp异常

    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    //标识错误的类型
    class wrong  
    {
    };
    
    int intdiv(int a, int b)
    {
    	try
    	{	  
    		if (b==0)
    		{
    			throw 10;//能够是不论什么对象  wrong();
    		}
    		int c = a / b;
    		return c;
    	}
    	catch (int data )//类型名
    	{		
    		cout << "除法异常已经处理";
    		return -1;
    	}
    }
    
    int intdivA(int a, int b)
    {
    	return a / b;
    }
    
    void main()
    {
    	int x, y;
    	cin >> x >> y;
    	try
    	{
    		if (y==0)
    		{
    			throw "被除数为0";
    		}
    		else if (x==0)
    		{
    			throw "除数为0";
    		}
    	}
    	catch (const char * s)
    	{
    		if (strcmp(s,"被除数为0")==0)
    		{
    			cout << "被除数为0异常,请又一次输入";
    			cin >> x >> y;
    		}
    		else  if (strcmp(s, "除数为0") == 0)
    		{
    			cout << "除数为0异常,请又一次输入";
    			cin >> x >> y;
    		}
    	}
    
    	std::cout << intdiv(x, y);
    	cin.get();
    	cin.get();
    	cin.get();
    }

    类的异常

    #include<iostream>
    using namespace std;
    
    class wrong
    {
    };
    
    class wrongA
    {
    };
    
    class Array
    {
    public:
    	Array(int num)
    	{
    		n = num;
    		
    		if (num<=0)
    		{
    			throw  wrong();
    		}
    		p = new int[num];//正确代码在throw之后。不会被运行。
    		for (int i = 0; i < num;i++)
    		{
    			p[i] = 0;
    		}
    	}
    
    	int & operator[](int num)
    	{
    		if (num < 0 || num>= n)
    		{
    			throw wrongA();
    		}
    		return p[num];
    	}
    protected:
    private:
    	int *p;
    	int n;
    };
    
    void main()
    {
    	try
    	{
    		Array myarrar(2);
    		myarrar[-1];
    	}
    	catch (wrongA  e)
    	{		
    		cout << "下标越界";
    	}
    	catch (wrong  e)
    	{
    		cout << "程序发生异常,数组大小必须大于等于1";
    	}
    
    	cin.get();
    }
    
    void mainA()
    {
    	int a[3] = { 1, 2, 3 };
    //	printf("%d", 2[a]);//*(2+a)
    //	printf("%d", a[9886655]);
    	getchar();
    }


    #include<iostream>
    #include <string>
    
    using namespace std;
    
    class box   //正方体
    {
    public:
    	box(int data) 
    	{
    		cout << "開始构造";
    		if (data ==0)
    		{
    			zero z1;
    			z1.errorcode = 212;
    			throw z1;
    		} 
    		else if ( data >0 && data<100)
    		{
    			throw small();
    		}
    		else  if (data>10000)
    		{
    			throw big();
    		}
    		else if (data>100 && data<10000)
    		{
    			a = data;
    		}
    		else
    		{
    			throw wrong{};
    		}		
    	}
    	
        int  gettiji()
    	{
    		 return  a*a*a;
    	}
    
    	class zero
    	{
    	public:
    		int errorcode;
    	
    	}; 
    	class wrong{};
    	class big{};
    	class small{};
    private:
    	int a;//变长
    };
    
    void main()
    {
    	try
    	{
    		box newbox(0);
    	}
    	catch (box::zero w)
    	{
    	    if (w.errorcode==22)
    	    {
    			cout << "22号错误正方体长度不能够为0";
    	    } 
    	    else
    	    {
    			cout << "fei22号错误正方体长度不能够为0";
    	    }		
    	}
    	catch (box::wrong)
    	{
    		cout << "正方体长度异常";
    	}
    	catch (box::big)
    	{
    		cout << "正方体长度太长";
    	}
    	catch (box::small)
    	{
    		cout << "正方体长度taiduan";
    	}
    
    	cin.get();
    }

    面试1001-100

    单独整理成文档







  • 相关阅读:
    ASP.NET中在一般处理程序中使用session的简单介绍
    oracle 11gR2安装图文教程
    ORACEL 创建表空间
    Echarts使用心得总结(二)
    SqlServer 2008无法远程连接到服务器
    浅谈HTTP中Get与Post的区别
    java设计模式-观察者模式学习
    读牛人博客有感
    mysql的with rollup
    java中的枚举enum
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7270760.html
Copyright © 2020-2023  润新知