琴长不过时光 发表于 2020-5-26 14:27:40

小白求助 throw抛异常问题

#include "iostream"
using std::endl;
using std::cout;
using std::cin;

void m_strcpy(char* from,char* to)
{
        if (from == nullptr)
        {
                throw "源操buf错误";
        }
        if (to == nullptr)
        {
                throw "目标buf错误";
        }
        if (*from == 'A')
        {
                throw "copy过程出错";
        }

        while (*from != '\0')
        {
                *to = *from;
                to++;
                from++;
        }
        *to = '\0';
}

void main()
{
        char buf1[] = "ABCDEFG";
        char buf2;
        try
        {
                m_strcpy(buf1, buf2);
        }
        catch (char* e)
        {
                cout << e << "char类型错误" << endl;
        }
       
        cout << buf1 << endl;
        cout << buf2 << endl;
        system("pause");
}

如图 一运行 这里就抛异常

上善若水··· 发表于 2020-5-26 15:33:54

      if (*from == 'A')
      {
                throw "copy过程出错";// 这个地方抛出的异常
      }

*from 就等于 buf1 就是 A

琴长不过时光 发表于 2020-5-27 10:54:16

上善若水··· 发表于 2020-5-26 15:33
if (*from == 'A')
      {
                throw "copy过程出错";// 这个地方抛出的异常


这个我知道 只是我后面写的catch代码为啥不能捕捉异常?

上善若水··· 发表于 2020-5-27 11:30:50

catch (char* e) ; 这个里面的变量不是随便写的,你去查一下就知道了··

喝水的剑客 发表于 2020-10-31 10:28:18

catch (char* e)
改成
catch (const char* e)
页: [1]
查看完整版本: 小白求助 throw抛异常问题