다음 문서에서는 C# StackOverflowException에 대한 개요를 제공합니다. StackOverflowException은 OpCodes.LocalLoc 명령이라는 MSIL(Microsoft Intermediate Language) 명령에 의해 발생합니다. StackOverflowException 클래스는 StackOverflowException(), StackOverflowException(문자열 메시지), StackOverflowException(문자열 메시지, 예외 innerException) 등을 포함한 여러 메서드를 제공합니다.
구문:
[Serializable] public sealed class StackOverflowException : SystemException
다음은 언급된 예입니다.
런타임에 무한 재귀가 발생할 때 스택 오버플로 예외를 보여주는 C# 프로그램
코드:
using System; //a class called program is defined public class program { // a method called rec is defined which takes a value as parameter and increases its value by one static void Rec(int vals) { // since we have written a recursive loop and 0 is passed as a parameter, it ends in an infinite loop causing exception Console.WriteLine(vals); Rec(++vals); } //main method is called public static void Main() { //The rec method is called to start the infinite recursion Rec(0); } }
출력:
try 블록 및 catch 코드 블록을 사용하여 예외를 포착한 후에도 런타임에 무한 재귀가 발생할 때 StackOverflowException을 보여주기 위한 C# 프로그램.
코드:
using System; //a class called check is defined public class check { // a method called ex is defined which takes a value as parameter and increases its value by one static void ex(int equals) { Console.WriteLine(equals); ex(++equals); } //main method is called within which try and block methods are defined to catch the exception public static void Main() { try { //The ex method is called by passing zero as a parameter to start the infinite recursion ex(0); } catch (StackOverflowException ep) { Console.WriteLine(ep.Message); } } }
출력:
재귀에 대한 무한 루프는 try 블록 내의 ex 메소드에 매개변수로 0을 전달하여 시작됩니다. 예외를 잡기 위해 catch 블록을 작성했음에도 불구하고 이 예외는 catch 블록을 넘어서서 catch되기 때문에 이 예외를 catch하지 못합니다.
위 내용은 C# 스택오버플로우예외의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!