search
HomeBackend DevelopmentC#.Net TutorialC++ exception handling methods

C++ exception handling methods

Oct 23, 2019 am 11:51 AM
c++abnormal

C++ exception handling methods

c Exception handling

We often encounter some abnormal situations when the program is running, for example: divisor when doing division is 0; the user entered a negative number when entering age; when using the new operator to dynamically allocate space, there is not enough space and cannot be allocated; when accessing array elements, the subscript is out of bounds; when opening a file for reading, the file does not exist, etc.

These abnormal situations, if not discovered and handled, are likely to cause the program to crash.

The so-called "processing" can mean giving an error message and then allowing the program to continue executing along an error-free path; it can also mean having to end the program, but doing some necessary work before ending. Such as writing data in memory to files, closing open files, releasing dynamically allocated memory space, etc.

C introduces exception handling mechanism. The basic idea is: when function A finds an exception during execution, it can not handle it, but just "throw an exception" to the caller of A, assumed to be function B.

Throwing an exception without handling it will cause function A to terminate immediately. In this case, function B can choose to catch the exception thrown by A and handle it, or it can choose to ignore it. If ignored, the exception will be thrown to the caller of B, and so on.

If the functions at each level do not handle exceptions, the exception will eventually be thrown to the outermost main function. The main function should handle exceptions. If the main function does not handle the exception, the program will terminate abnormally immediately.

C Basic syntax for exception handling

C Exception handling is implemented through throw statements and try...catch statements. The syntax of the throw statement is as follows:

throw  表达式;

This statement throws an exception. An exception is an expression whose value type can be a primitive type or a class.

try...catch 语句的语法如下:
try {
    语句组
}catch(异常类型) {
  异常处理代码
}...catch(异常类型) {
    异常处理代码
}

There can be multiple catches, but must have at least one .

We might as well call try and the content in {} as a "try block", and call catch and the content in {} as a "catch block"

try... The execution process of the catch statement is: execute the statements in the try block. If no exception is thrown during the execution, then the statements following the last catch block will be executed after the execution, and all statements in the catch block will not be executed; If an exception is thrown during the execution of the try block, then immediately after the exception is thrown, it jumps to the first catch block whose "exception type" matches the thrown exception type for execution (it is said that the exception is "caught" by the catch block "), after execution, jump to the end of the last catch block to continue execution.

For example, the following program:

#include <iostream>
using namespace std;
int main()
{
    double m ,n;
    cin >> m >> n;
    try {
        cout << "before dividing." << endl;
        if( n == 0)
            throw -1; //抛出int类型异常
        else
            cout << m / n << endl;
        cout << "after dividing." << endl;
    }
    catch(double d) {
        cout << "catch(double) " << d <<  endl;
    }
    catch(int e) {
        cout << "catch(int) " << e << endl;
    }
    cout << "finished" << endl;
    return 0;
}

The running result of the program is as follows:

9 6↙
before dividing.
1.5
after dividing.
finished

Explanation that when n is not 0, no exception will be thrown in the try block . Therefore, after the try block is executed normally, the program continues execution beyond all catch blocks, and none of the catch blocks will be executed.

The running result of the program may also be as follows:

9 0↙
before dividing.
catch\(int) -1
finished

When n is 0, an integer exception will be thrown in the try block. After an exception is thrown, the try block stops execution immediately. The integer exception will be caught by the first catch block that matches the type, that is, it will enter the catch(int e) block for execution. After the catch block is executed, the program will continue to execute until it ends normally.

If the exception thrown is not caught by the catch block, for example, change catch(int e) to catch(char e), when the input n is 0, the integer exception thrown will not be If the catch block can catch it, the exception will not be handled, then the program will terminate immediately, and the content after try...catch will not be executed.

The above is the detailed content of C++ exception handling methods. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
From Web to Desktop: The Versatility of C# .NETFrom Web to Desktop: The Versatility of C# .NETApr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# .NET and the Future: Adapting to New TechnologiesC# .NET and the Future: Adapting to New TechnologiesApr 14, 2025 am 12:06 AM

C# and .NET adapt to the needs of emerging technologies through continuous updates and optimizations. 1) C# 9.0 and .NET5 introduce record type and performance optimization. 2) .NETCore enhances cloud native and containerized support. 3) ASP.NETCore integrates with modern web technologies. 4) ML.NET supports machine learning and artificial intelligence. 5) Asynchronous programming and best practices improve performance.

Is C# .NET Right for You? Evaluating its ApplicabilityIs C# .NET Right for You? Evaluating its ApplicabilityApr 13, 2025 am 12:03 AM

C#.NETissuitableforenterprise-levelapplicationswithintheMicrosoftecosystemduetoitsstrongtyping,richlibraries,androbustperformance.However,itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical,wherelanguageslikeRustorGomightbepreferable.

C# Code within .NET: Exploring the Programming ProcessC# Code within .NET: Exploring the Programming ProcessApr 12, 2025 am 12:02 AM

The programming process of C# in .NET includes the following steps: 1) writing C# code, 2) compiling into an intermediate language (IL), and 3) executing by the .NET runtime (CLR). The advantages of C# in .NET are its modern syntax, powerful type system and tight integration with the .NET framework, suitable for various development scenarios from desktop applications to web services.

C# .NET: Exploring Core Concepts and Programming FundamentalsC# .NET: Exploring Core Concepts and Programming FundamentalsApr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

Testing C# .NET Applications: Unit, Integration, and End-to-End TestingTesting C# .NET Applications: Unit, Integration, and End-to-End TestingApr 09, 2025 am 12:04 AM

Testing strategies for C#.NET applications include unit testing, integration testing, and end-to-end testing. 1. Unit testing ensures that the minimum unit of the code works independently, using the MSTest, NUnit or xUnit framework. 2. Integrated tests verify the functions of multiple units combined, commonly used simulated data and external services. 3. End-to-end testing simulates the user's complete operation process, and Selenium is usually used for automated testing.

Advanced C# .NET Tutorial: Ace Your Next Senior Developer InterviewAdvanced C# .NET Tutorial: Ace Your Next Senior Developer InterviewApr 08, 2025 am 12:06 AM

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

C# .NET Interview Questions & Answers: Level Up Your ExpertiseC# .NET Interview Questions & Answers: Level Up Your ExpertiseApr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software