小编The*_*ner的帖子

C++ - 关于抛出异常的几个问题

我有几个关于在C++中抛出异常的问题.据我所知,他们......

可以从main()函数中抛出异常.任何可以在main()函数中抛出异常的代码块都应该被try和catch语句包围,如下所示

    void foo(//args) {
     if (...) {
      throw "Error reached";
     } ...

    int main() {
     ...
     try {
      //Code that can throw an excpetion
     } catch(const char* msg) (
      cerr << msg << endl;
     } 
     ...
    }
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,为什么catch的参数是一个const char*.C++不允许字符串吗?另外,是否可以抛出一个不是const char*的异常,就像一个int?还是一个炭火?

在foo中抛出异常,终止foo函数?

是否有可以将try和catch语句放在与throw相同的函数中的情况?

对不起,如果这些是基本问题.谢谢你

c++ exception

2
推荐指数
1
解决办法
170
查看次数

c++ - 分割绝对文件路径

我正在为学校作业编写一个 C++ 程序。在某些时候,这个问题要求我更改目录,我知道该怎么做。但是,用户将为程序提供文件的绝对路径。我想做的是将目录更改为该文件所在的位置。例如,如果我在目录 dir2 中,并且用户想要转到该文件

     /home/dir1/dir2/dir3/dir4/file
Run Code Online (Sandbox Code Playgroud)

我想要做

     int ret = chdir("home/dir1/dir2/dir3/dir4");
Run Code Online (Sandbox Code Playgroud)

我的问题是如何将用户给定的字符串拆分为

     /home/dir1/dir2/dir3/dir4/
Run Code Online (Sandbox Code Playgroud)

     file
Run Code Online (Sandbox Code Playgroud)

编辑我想通了。我首先将绝对路径名从 const char* 转换为字符串。然后我使用 .find_last_of("/") 字符串成员来查找字符串中最后一个“/”的位置。然后我使用 .substr() 成员获取从 0 到 .find_last_of 返回的位置的子字符串

c++ split absolute-path chdir

1
推荐指数
2
解决办法
2万
查看次数

c++ - 抛出多个相同类型的异常

所以我有一个有两个例外的程序。在这两种情况下,我都想抛出一个可以在主函数中捕获并在错误消息中使用的字符串。然而,据我所知

    try {
     ...
    } catch(string msg) {
     cerr << "..." << msg << "..." << endl;
    } catch (string msg2) {
     cerr << "..." << msg2 << "..." << endl;
    }
Run Code Online (Sandbox Code Playgroud)

不允许。有什么办法可以做到以上或类似的事情吗?谢谢

c++ exception

0
推荐指数
1
解决办法
6659
查看次数

标签 统计

c++ ×3

exception ×2

absolute-path ×1

chdir ×1

split ×1