C#中throw抛出异常后,后续代码执行情况
1、问题来源参见以下代码:
public void add(int index, E element)
{if(size >= elements.length) {throw new RuntimeException("顺序表已满,无法添加"); //return; //该句还需要吗?}....
}
2、测试代码及执行情况如下:
//代码1
public static void test() throws Exception
{throw new Exception("参数越界"); System.out.println("异常后"); //编译错误,「无法访问的语句」
}//代码2
try
{throw new Exception("参数越界");
}
catch(Exception e)
{e.printStackTrace();
}
System.out.println("异常后");//可以执行//代码3
if(true)
{throw new Exception("参数越界");
}
System.out.println("异常后"); //抛出异常,不会执行
3、总结:
- 若一段代码前有异常抛出,并且这个异常没有被捕获,这段代码将产生编译时错误「无法访问的语句」。如代码1
- 若一段代码前有异常抛出,并且这个异常被try...catch所捕获,若此时catch语句中没有抛出新的异常,则这段代码能够被执行,否则,同第1条。如代码2
- 若在一个条件语句中抛出异常,则程序能被编译,但后面的语句不会被执行。如代码3
另外总结一下运行时异常与非运行时异常的区别:
运行时异常是RuntimeException类及其子类的异常,是非受检异常,如NullPointerException、IndexOutOfBoundsException等。由于这类异常要么是系统异常,无法处理,如网络问题;
要么是程序逻辑错误,如空指针异常;JVM必须停止运行以改正这种错误,所以运行时异常可以不进行处理(捕获或向上抛出,当然也可以处理),而由JVM自行处理。Java Runtime会自动catch到程序throw的RuntimeException,然后停止线程,打印异常。非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类,是受检异常。非运行时异常必须进行处理(捕获或向上抛出),如果不处理,程序将出现编译错误。一般情况下,API中写了throws的Exception都不是RuntimeException。
常见运行时异常:
常见非运行时异常:
C#中throw抛出异常后,后续代码执行情况相关推荐
- java 抛出异常后,还会执行后面代码吗?
java 抛出异常后,还会执行后面代码吗? 比如: 方法:{ try{ //可能出错语句块 }catch{ //错误 } return .. } 如果执行了catch语句块, 那么这个return还会 ...
- sqlite 0转换为bit_Cisco Talos在SQLite中发现了一个远程代码执行漏洞
思科Talos的研究人员在SQLite中发现了一个use-after-free() 的漏洞,攻击者可利用该漏洞在受影响设备上远程执行代码. 攻击者可以通过向受影响的SQLite安装发送恶意SQL命令来 ...
- 关于 JS 中,实现在异步代码执行完毕再执行后续代码
因为 js 是单线程,所有的同步任务要等前一个任务执行完毕,再执行下一个任务. function fn1() {console.log("fn1")fn2()fn3() }func ...
- php定时执行代码漏洞_在CTF比赛中发现的PHP远程代码执行0day漏洞
众所周知,CTF比赛都是人为构造漏洞环境,人为制造安全漏洞,供安全从爱好者研究,好磨练和增强自己的安全技能. 参加CTF比赛,通常你需要明白出题人的想法,按照出题人的意图来解开谜题. 但是,就像所有的 ...
- VMware 修复 Workstation、Fusion 中多个严重的代码执行漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 VMware 修复了3个严重的产品漏洞,包括一个存在于 Workstation 和 Fusion 中的严重漏洞.攻击者可从 guest ...
- 统计php代码执行情况,PHP代码执行函数总结
PHP中可以执行代码的函数,常用于编写一句话木马,可能导致代码执行漏洞,这里对代码执行函数做一些归纳. 常见代码执行函数,如 eval().assert().preg_replace().create ...
- springmvc框架下Filter过滤器中过滤文件后 后续 controller为空的问题
开发过程中遇到过滤文件类型的问题,需要校验文件的头信息,,在过滤器中通过request获取文件流信息 但是后续的controller中的MultipartFile一直都是空的,网上的网友的方案使用了 ...
- 如何在word中插入格式化后的代码
一.工具 方法1.打开这个网页PlanetB; 方法2.或者谷歌搜索syntax highlight code in word documents,检索结果的第一个.如下图: PS. 方法1和2打开的 ...
- python执行txt中代码_【技术分享】文件解压之过 Python中的代码执行
预估稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 一.前言 Python中负责解压压缩文件的代码实现上并不安全,存在目录遍历漏洞,攻击者可以利用该漏洞覆盖_ ...
最新文章
- python框架之Flask基础篇(一)
- 远心镜头技术及其选型介绍
- 不应该在ToString()方法中修改引用类型
- Ubuntu上常用快捷键使用
- [Google Guava] 1.5-Throwables:简化异常和错误的传播与检查
- 济南泉水与城市生态主题 第四届泉水文化论坛第二次会议
- VTK:图像高斯平滑用法实战
- Android插件化开发之DexClassLoader动态加载dex、jar小Demo
- Linux 终端仿真程序Putty
- Eigen3的库使用
- mac上设置新版chrome浏览器跨域
- rep( )函数--R语言
- Ubuntu GCC编译的c程序出现段错误
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之CDN内容分发网络
- 【苹果推相册软件】imessage群发arrangesAllSubviews安装
- 深入分析ClassLoader
- MySQL酒店管理系统课程设计_酒店管理系统的设计与实现(PHP,MySQL)(含录像)
- 用opencv实现目标追踪的学习笔记——camshift
- java 交易不返回,Java rowAtPoint()不返回正确的值
- 北京尚学堂 SpringBoot 热部署