CWE-397:通用异常的投掷声明
查看自定义信息:
声明一种抛出异常或投掷的方法,使呼叫者难以执行正确的错误处理和错误恢复。例如,设置了Java的异常机制,以使呼叫者更容易预测出什么问题,并编写代码来处理每个特定的特殊情况。宣布一种方法会引发一种通用的异常形式,使该系统失败了。
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
与“软件开发”视图相关(CWE-699)
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 C ++(不确定的患病率) 爪哇(不确定的患病率) C#(不确定的患病率)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
示例1 以下方法抛出了三种类型的异常。
(好代码)
示例语言:爪哇
public void doexchange()抛出ioException,InvocationTargetException,sqlexception {
... }虽然写作似乎更整洁
(不良代码)
public void doexchange()抛出异常{
... }这样做会阻碍呼叫者理解和处理发生的例外的能力。此外,如果以后的DoexChange()进行了修订,引入了一种新类型的异常,该异常应与以前的异常不同,则没有简单的方法来执行此要求。 示例2 C ++的早期版本(C ++ 98,C ++ 03,C ++ 11)包括一个称为动态异常规范的功能。这允许函数声明可能会投掷哪种类型的异常。可以声明一般类别的例外类,以涵盖可能被抛出的任何派生异常。
(不良代码)
int myFunction()throw(std ::异常){
如果(0)抛出out_of_range(); }抛出length_error(); 在上面的示例中,代码声明MyFunction()可以抛出类型“ STD ::异常”的例外,从而隐藏了有关可能被抛出的可能派生异常的详细信息。
此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
适用平台
对于C ++,此弱点仅适用于C ++ 98,C ++ 03和C ++ 11。它依赖于称为动态异常规范的功能,该功能是C ++早期版本的一部分,但在C ++ 11中被弃用。它已被C ++ 17及更高版本删除。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |