不如归去 发表于 2023-9-12 00:10:44

C# try catch 使用

try catch使用场景:1. 一般在线程,委托中使用, 在线程与委托中使用是因为,如果线程和委托中出现异常在程序外部是捕获不到的,需要在内部做单独处理。2. 程序的外层使用,比如程序的入口处加一个全局异常捕获,这样整个程序发生的异常都可以捕获到。3. 在事件或者主体方法中使用,一些小的公共方法可以不使用,需要单独处理异常的除外。4. 在一些调用比较多的公共方法里如果使用tryc catch 最好将异常 throw抛出去,又上层处理异常,这样在发现异常时可以知道是由那个方法调用的。5. 很多时候程序部署到现场是没有源码可以调试的,这个时候就得需要通过分析日志来排查问题,try catch 大多会和logNet4 结合使用,在catch中使用logNet4记录异常信息,lognet4记录的日志可以把异常方法调用的层级以及具体代码的行号记录下拉方便排查问题。6. try catch不能写的太多,也不能写的太少。写太少1. 容易把系统的异常信息弹窗提示到页面,可是这个提示信息用户是看不懂的,造成不好的用户体验。2. 程序容易闪退,还找不到因为什么原因闪退。try catch写的太多,在调用比较多方法里发生异常了,可能就不方便定位是由那个功能调用的这个方法导致的异常了,不方便排查问题。 在C#中,try-catch语句用于异常处理。它允许您在代码块中检测和捕获异常,以便您可以在程序运行时进行错误处理和调试。
try-catch语句的基本结构如下:
try
{
// 可能引发异常的代码
}
catch (ExceptionType1 ex)
{
// 处理特定异常类型ExceptionType1的代码
}
catch (ExceptionType2 ex)
{
// 处理特定异常类型ExceptionType2的代码
}
catch (ExceptionType3 ex)
{
// 处理特定异常类型ExceptionType3的代码
}
finally
{
// 无论是否发生异常,都会执行的代码
}在try块中,您放置可能会引发异常的代码。当执行到try块中的代码时,如果发生异常,程序将跳转到与异常类型匹配的catch块。您可以根据需要添加多个catch块,以处理不同类型的异常。最后一个catch块通常不指定异常类型,因此它将捕获所有未处理的异常。
finally块是可选的,它包含的代码无论是否发生异常都会执行。这对于清理资源或执行必要的操作非常有用,例如关闭文件或数据库连接。
以下是一个使用try-catch语句的示例:
try
{
int result = 0;
result = 10 / 0; // 除以零将引发DivideByZeroException异常
}
catch (DivideByZeroException ex)
{
Console.WriteLine("除数不能为零:{0}", ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("发生未处理的异常:{0}", ex.Message);
}
finally
{
Console.WriteLine("程序结束。");
}在上面的示例中,我们尝试将10除以0,这将引发DivideByZeroException异常。try-catch语句捕获该异常,并执行与DivideByZeroException类型匹配的catch块。然后,无论是否发生异常,都会执行finally块中的代码。
 
以下是一些其他使用try-catch语句的示例:

[*]文件读取示例:

try
{
using (StreamReader reader = new StreamReader("file.txt"))
{
string content = reader.ReadToEnd();
Console.WriteLine(content);
}
}
catch (FileNotFoundException ex)
{
Console.WriteLine("文件未找到:{0}", ex.Message);
}
catch (IOException ex)
{
Console.WriteLine("文件读取错误:{0}", ex.Message);
}
finally
{
Console.WriteLine("程序结束。");
}
来源:https://www.cnblogs.com/wjygxjz/archive/2023/09/11/17694470.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: C# try catch 使用