c# - 到底哪个类抛出异常?
问题描述
我有两种方法:
public void MethodOne()
{
try {
MethodTwo();
}
catch (Exception ex) {
Log.Message("Something went wrong);
throw;
}
}
public void MethodTwo()
{
try {
// Some logic that fails
}
catch (Exception ex) {
throw ex;
}
}
我从 MethodOne 调用 MethodTwo。如果在 MethodTwo 中抛出异常。程序会在异常处理后终止,还是会冒泡到 MethodOne 并在那里被捕获?
解决方案
异常将被捕获并重新抛出MethodTwo
,然后再次捕获并重新抛出MethodOne
。
应用程序是否会终止取决于您调用的方式和位置,MethodOne
以及您是否在调用时捕获异常,MethodOne
或者在调用链中更进一步。
请注意,这会throw ex
重置堆栈跟踪,应避免使用。
推荐阅读
- javascript - 我希望以下正则表达式返回 16 个字符
- c++ - 对类型“const int *”的非 const 左值引用不能绑定到不相关类型“int *”的值
- json - 为 jq 命令提供一个非常大的参数来过滤键
- python - 键入时出错:命令行参数上的“gunicorn app:application --preload -b 0.0.0.0:5000”
- opengl - OpenGL着色器sampler2D的默认值是什么
- html - 自定义表单的 print() 页面
- reactjs - 使用来自将 ref 转发到 RN 组件的组件中的 ref.current 的打字稿错误
- sql - SSMS 不捕获过程、视图等中的注释
- javascript - 使用 js 切换浏览器选项卡/主题颜色
- android - 从通知导航到带有 NavController 的片段