当前位置: 首页 > 知识库问答 >
问题:

OOP中C++的异常(试抓)

申屠泳
2023-03-14
istream & operator>>(istream & input, Date &date) 
{ 
    int day, mounth, year;
    cout << "please enter day , mounth year" << endl;
    input >> day >> mounth >> year;
    date.setDay(day);
    date.setMonth(mounth);
    date.setYear(year);
    if (day < 1 || day >31)
        throw "Illegal day for month should be number day - between 1 to 31" ;
    if (mounth < 1 || mounth > 12)
        throw "Illegal month should be number mount - between 1 to 12" ;
    if ((mounth == 4 || mounth == 6 || mounth == 9 || mounth == 11)
        && (date.day > 30))
        throw "Illegal day for month " ;
    if (year == 1 && mounth == 1 && day == 1)
        throw "please stop the while loop your date is 1/1/1" ;

        return input;
 }

共有1个答案

司马璞
2023-03-14

在您的代码中没有trycatch块,throw关键字需要包装到try块中,如下所示:

try {
    std::cout << "Throwing an integer exception...\n";
    throw 42;
} catch (int i) {
    std::cout << " the integer exception was caught, with value: " << i << '\n';
}

这是cppreference try catch页面中的一个示例,我建议您阅读这篇文章。

根据您的需要,您可以这样做:

int main()
{
    int day = 0;
    try {
        std::cin >> day;
        if (day < 1 || day >31)
            throw std::string("Illegal day for month should be number day - between 1 to 31");
    } catch (const std::string &error) {
        std::cout << "Catch error: " << error << "\n";
    }
}
 类似资料:
  • 问题内容: 异常存储在哪里?堆,堆。如何为异常分配和释放内存?现在,如果您有多个需要处理的异常,是否创建了所有这些异常的对象? 问题答案: 我假设为异常分配的内存分配方式与所有其他对象(在堆上)分配方式相同。 这曾经是个问题,因为您不能为OutOfMemoryError分配内存,这就是直到Java 1.6之前 才没有堆栈跟踪的原因。现在,它们也为stacktrace预分配了空间。 如果您想知道在抛

  • 我有以下简单的类 和以下配置文件 原因:java.lang.ClassNotFoundException:org.springframework.core.annotation.mergedannotations$searchStrategy at java.base/jdk.internal.loader.builtInclassLoader.LoadClass(builtInclassLoad

  • 我有一个Spring Boot应用程序(1.5.10.release),其中包含一个主程序(SpringBootApplication)如下所示: 存储库如下所示: A和B它们本身是JPA注释类。整个应用程序包含对数据库的访问。 此外,我有这样一个服务: XService不是通过@autowire或其他方式使用的(只需要删除它): 因此,我尝试运行AControllerTest,得到以下错误: j

  • 本文向大家介绍C#嵌套异常并尝试catch块。,包括了C#嵌套异常并尝试catch块。的使用技巧和注意事项,需要的朋友参考一下 示例 一个能够在另一个try catch内部嵌套一个异常/块。 这样一来,您可以管理小的代码块,这些代码块可以在不破坏整个机制的情况下正常工作。 注意:抛出父catch块时,避免吞咽异常

  • 主要内容:try/catch语句,C#中的异常类,自定义异常类,抛出异常在 C# 中,异常是在程序运行出错时引发的,例如以一个数字除以零,所有异常都派生自 System.Exception 类。异常处理则是处理运行时错误的过程,使用异常处理可以使程序在发生错误时保持正常运行。 C# 中的异常处理基于四个关键字构建,分别是 try、catch、finally 和 throw。 try:try 语句块中通常用来存放容易出现异常的代码,其后面紧跟一个或多个 catch 语句

  • 异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。 异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。 catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。 try