首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否有不应该抛出异常的函数?

是否有不应该抛出异常的函数?
EN

Stack Overflow用户
提问于 2021-02-10 15:01:31
回答 3查看 233关注 0票数 0

当使用C# .Net进行编程时,有什么函数几乎总是抛出异常是“坏主意”呢?

在C++中,从析构函数中抛出异常很少是一个好主意,因为它通常会导致程序终止。在C# .Net中有类似的情况吗?我不感兴趣的情况下,例外只是被认为是不好的风格。我要找的地方,抛出一个例外往往会导致严重的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-10 15:37:56

微软的“设计规则”( Design CA1065 )涵盖了这一点(不要在意外位置引发异常),该规则声明:

不希望抛出异常的方法可分为以下几类:

  • 属性获取方法
  • 事件访问器方法
  • 等于方法
  • GetHashCode方法
  • ToString方法
  • 静态构造函数
  • 终结器
  • 处置方法
  • 平等算子
  • 隐式Cast算子
票数 0
EN

Stack Overflow用户

发布于 2021-02-10 15:09:12

  1. 静态构造函数或类型构造函数。如果有未处理的异常,类型将不会加载到应用程序域中,每次尝试调用它时都会返回最后一个异常。
  2. 在终结器中
票数 2
EN

Stack Overflow用户

发布于 2021-02-11 14:10:05

除了提到的其他地方之外,我还要添加async void方法,特别是在第一个await之后。这里的问题是,如果等待需要重新安排时间,那么任何从方法中产生气泡的例外情况都可能落在意想不到的位置。例如:如果您在等待使用.ConfigureAwait(false),或者如果async void方法是从后台线程调用的,那么该异常将在线程池中落地,其直接路径将变为不可处理。

话虽如此,但我认为使用async void是合理的,而且如果异常从其中冒出来,那么您可能已经太晚了,无法正确处理异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66146408

复制
相关文章
c++构造函数是否可以抛出异常_什么叫抛出异常
从语法上来说,构造函数可以抛出异常。但从逻辑上和风险控制上,构造函数中尽量不要抛出异常。万不得已,一定要注意防止内存泄露。
全栈程序员站长
2022/09/22
1.7K1
应该抛出什么异常?不应该抛出什么异常?(.NET/C#)
2018-02-04 13:25
walterlv
2018/09/18
1.7K0
是否能在构造函数,析构函数中抛出异常?
宋凯伦
2018/01/04
3.7K0
Python抛出异常_python抛出异常的作用
在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误
全栈程序员站长
2022/11/02
2.6K0
dotnet C# 如果在构造函数抛出异常 析构函数是否会执行
请问以上代码的 ~Foo 是否可以在垃圾回收执行,或者说在构造函数里面抛出异常,是否这个对象可以被垃圾回收
林德熙
2021/12/24
4890
dotnet C# 如果在构造函数抛出异常 是否可以拿到对象赋值的变量
如果使用某个变量去获取某个类型的对象创建,但是在这个类型的构造函数调用时抛出异常,请问此变量是否可以拿到对应的对象
林德熙
2021/12/24
9060
C++ 析构函数不要抛出异常
从语法上来说,析构函数可以抛出异常,但从逻辑上和风险控制上,析构函数中不要抛出异常,因为栈展开容易导致资源泄露和程序崩溃,所以别让异常逃离析构函数。
恋喵大鲤鱼
2022/05/09
1.4K0
【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
1. 异常处理 : 使用 " try{}catch(){} " 将抛出异常的代码包起来 , 注意将可能抛出异常的代码包裹在 try 后的大括号中 , 将异常处理逻辑放在 catch 后的大括号中 ;
韩曙亮
2023/03/27
1.3K0
python抛出异常会终止程序吗_python抛出异常的作用
当python执行无效的代码时,就会抛出异常。用 try 和 catch 语句可以处理异常,以避免程序的崩溃。我们也可以在代码中抛出自己的异常,抛出异常意味着 停止运行这个函数中的代码,将程序执行转到except语句
全栈程序员站长
2022/11/02
1.8K0
C++构造函数抛出异常注意事项
从语法上来说,构造函数可以抛出异常。但从逻辑上和风险控制上,构造函数中尽量不要抛出异常。万不得已,一定要注意防止内存泄露。
恋喵大鲤鱼
2019/02/22
2.3K0
java try catch 吃掉异常与跑出异常的区别,以及在项目中是否改抛出异常的理解
package com.liuxin.file; public class ExceptionTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub TryCatch tryCatch =new TryCatch(); /*下面这个方法中有try catch。但是因为在该方法中已经被try Catch吃掉了,所以在这里就不需要处理了。
全栈程序员站长
2022/06/30
7300
android 抛出FileNotFoundException异常
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
1.6K0
.net remoting 抛出异常
所有在远程软件运行的类,如果需要传输到本地,都需要继承 MarshalByRefObject 或其他可以序列化的类。
林德熙
2018/09/19
1.5K0
.net remoting 抛出异常
python中用来抛出异常的关键字是( )_python异常抛出
动抛出异常raise typeerror(类型错误) # 7. 触发异常try: raise typeerror(类型错误)except exception as e: print(e) # 8. 自定义异常class my…syntaxerror 语法错误 python代码非法,代码不能编译(个人认为这是语法错误,写错了) typeerror 类型错误传入对象类型与要求的不符合 unboundlocalerror …
全栈程序员站长
2022/11/02
1K0
dotnet remoting 抛出异常
所有在远程软件运行的类,如果需要传输到本地,都需要继承 MarshalByRefObject 或其他可以序列化的类。
林德熙
2019/09/27
1.4K0
dotnet remoting 抛出异常
python抛出异常和捕获异常_在try块中可以抛出异常吗
2.解析 关键字try 以及except是 使用Python 解释器主动抛出异常的关键, Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行 except…as… 是固定的语法格式 打印traceback信息 finally 后的代码不管是否抛出异常都会执行 except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始 注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)
全栈程序员站长
2022/11/02
4.6K0
python抛出异常会终止程序吗_catch里面抛出异常
如果没有 try 和 except 语句覆盖抛出异常的 raise 语句,该程序就会崩溃,并显示异常的出错信息。通常是调用该函数的代码知道如何处理异常,而不是该函数本身。所以你常常会看到 raise 语句在一个函数中,try 和 except 语句在调用该函数的代码中。
全栈程序员站长
2022/11/19
2.2K0
统一500异常( 非抛出的异常)
程序员朱永胜
2023/08/21
1840
python抛出异常和捕获异常_Python异常
class Widget: def __init__(self,size=(40,40)): self._size=size def getSize(self): return self._size def resize(self,width,height): if width<0 or height<0:
全栈程序员站长
2022/11/02
2.9K0
dotnet remoting 抛出异常
所有在远程软件运行的类,如果需要传输到本地,都需要继承 MarshalByRefObject 或其他可以序列化的类。
林德熙
2022/08/04
1.1K0

相似问题

我的代码请求抛出异常,但当我抛出异常时,它说不应该抛出异常。

30

是否有可能使CStr抛出异常?

30

是否有更合适的方法来测试构造函数是否抛出异常?

351

为什么不应该抛出这个异常?

11

SQLiteDatabase.insertWithOnConflict抛出异常。不应该

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文