c# - 仅当 C# 中未发生另一个异常时如何捕获异常
问题描述
所以我是一名编程学生,我希望我的代码对异常进行尝试捕获,但前提是没有发生另一个异常。让我告诉你我想要的:
using (var ctxInsert = new model())
{
CATEGORIES c1 = new CATEGORIES(6, "cat6", "category6");
Console.WriteLine("Please wait while rows are added to tables...");
//first try-catch to know if the new entry exist
try
{
ctxInsert.CATEGORIES.Add(c1);
}
catch (ModelValidationException e1)
{
Console.WriteLine(e1.Message);
Console.WriteLine("Category already exist");
}
//second try-catch to make sure saving changes to table is succesful
try
{
ctxInsert.SaveChanges();
Console.WriteLine(c1.NAME + " : Succesfuly added");
}
catch (DbEntityValidationException e)
{
Console.WriteLine(e.Message);
Console.WriteLine("not done");
}
}
Console.ReadLine();
所以我想要做的是,第二个 try-catch 块只有在第一个 DIDN 没有捕获异常时才运行。因为现在,像这样,try-catch 都运行,如果第一个捕获异常,保存更改是没有意义的。
我自己尝试了很多东西,但没有任何效果......
解决方案
try-catch 的全部意义在于阻止异常阻止其余代码执行。在您的情况下,我想到了一些选项:
- 确定 try-catch 是否真的是您正在寻找的 - 您还可以让您的方法抛出异常并阻止执行其余代码
- 在你的捕获中抛出一个异常,这样你就可以得到你的日志,它会告诉其余的代码出了问题,阻止执行
- 使用第一次捕获修改的变量,然后根据该变量有条件地执行其余代码
- 使用 try-catch-finally
推荐阅读
- java - Netbeans 的项目属性中缺少打包
- r - 我可以在不使用 apply 的情况下附加这个字符向量吗?
- heroku - 在 Heroku,Phaser 2 上部署后未加载文件
- python - 如何编写一个将运算符放在数字之间的函数?
- node.js - 如何在 azure 中使用 docker-compose 部署 graphql API
- windows - 使用 MSVC 工具生成裸机二进制文件的过程是什么?
- python - tkinter 中的按钮 - 单击时:显示其背后的内容
- python - 为什么 Python 不从封闭变量范围切换到局部变量范围?
- python - Django 静态文件有时加载,有时不加载
- java - 在Java中排序后保留数组中元素的索引