try
{
// 可能会抛出异常的代码
int result = Divide(10, 0); // 示例:除以零异常
}
catch (DivideByZeroException ex) // 捕获除以零异常
{
Console.WriteLine("Error: Division by zero occurred.");
}
catch (ArithmeticException ex) // 捕获其他算术异常
{
Console.WriteLine("Error: An arithmetic error happened.");
}
catch (Exception ex) // 捕获所有未被前面 catch 块捕获的异常
{
Console.WriteLine("A general exception was caught: " + ex.Message);
}
finally
{
Console.WriteLine("This block is always executed after the try-catch blocks.");
}
文件操作:
try
{
using (StreamReader reader = new StreamReader("non_existent_file.txt"))
{
string content = reader.ReadToEnd();
}
}
catch (FileNotFoundException ex)
{
Console.WriteLine($"File not found: {ex.FileName}");
}
数据库查询:
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
command.ExecuteNonQuery();
}
}
catch (SqlException ex)
{
Console.WriteLine("SQL Error: " + ex.Message);
}
网络请求:
try
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync("http://example.com/notfound");
response.EnsureSuccessStatusCode();
}
}
catch (HttpRequestException ex)
{
Console.WriteLine("Network request failed: " + ex.Message);
}
非法参数检查:
public void ProcessData(int input)
{
if (input < 0)
{
throw new ArgumentException("Input must be non-negative.");
}
try
{
// 正常处理逻辑
}
catch (Exception ex)
{
// 其他内部异常处理
}
}
资源清理:
Stream stream = null;
try
{
stream = File.OpenRead("important_file.bin");
// 对文件流的操作...
}
catch (IOException ex)
{
Console.WriteLine("IO Error: " + ex.Message);
}
finally
{
stream?.Dispose(); // 或者使用 'using' 语句代替 finally 块
}
throw 关键字用于显式抛出一个异常对象。当你在代码中遇到错误条件或不满足预期的情况时,可以使用 throw 来创建并抛出一个异常。
csharp
throw new ArgumentException(“Invalid argument provided.”);
当你执行 throw 语句时,它会立即停止当前方法的执行,并开始寻找合适的异常处理结构(即 catch 块),从当前方法的调用者开始向上遍历调用栈。
总结一下 throw 和 catch 的区别与用途:
throw:用于启动异常传播过程,强制程序暂停正常执行流程并转而处理错误情况。
catch:用于接收和管理由 throw 引发的异常,提供了一种机制来应对程序运行时出现的问题,确保程序不会因未处理的异常而意外终止,同时能够针对性地执行错误恢复逻辑。
python学习汇总连接:
50个开发必备的Python经典脚本(1-10)
50个开发必备的Python经典脚本(41-50)
————————————————
?最后我们放松一下眼睛