当前位置:网站首页>异常处理(try,catch,finally)
异常处理(try,catch,finally)
2022-08-09 22:01:00 【欣21】
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
try{
//可能会发生异常的代码
}catch(//异常类型 引用名){
//异常处理代码
}finally{
//必须执行代码
}
try:用来检测不安全的代码块(发现异常)
try块中任何一条语句发生了异常,下面的代码将不会被执行,程序将跳转到异常处理代码块中,即catch块。因此,不要随意将不相关的代码放到try块中,因为随时可能会中断执行。
catch:捕获异常,保证程序可以运行下去
catch语句必须紧跟着try语句之后,称为捕获异常,也就是异常处理函数,一个try后面可以写多个catch,分别捕获不同类型的异常,要从子类往父类的顺序写,否则有编译错误。
finally:该内容总是会执行的,只能有一个finally语句
finally {
System.out.println("总能执行,不受异常干扰");
//无论是否异常,finally包含的代码总能执行,且只能有一个finally语句
}
try catch finally 多种组合方式
try catch
try {
int i=100/0;
System.out.println(i);
}catch(Exception e){
System.out.println(1);
throw new RuntimeException();
try catch catch
try{
int i =10/0;
}atch (ArithmeticException m) {
m.printStackTrace();
} catch (Exception n) {
n.printStackTrace();
}
try finally
try {
int a = 10;
int b = 0;
int c = a/b;
System.out.println(c);
} finally {
System.out.println("总能执行,不受异常干扰");
//无论是否异常,finally包含的代码总能执行,且只能有一个finally语句
}
throw 和 throws
throw :用于显式抛出异常,抛出的时候是抛出的是一个异常类的实例化对象。
if(fileName==null){
throw new NullPointerException("文件名为null了");
}
throw用于方法体中,用来抛出一个实际的异常对象,使用throw后,要么使用try catch捕获异常,要么使用throws声明异常。
throws:定义一个方法的时候可以使用throws关键字声明,表示此方法不处理异常,而交给方法调用处进行处理。
public static void test() throws Exception, ArithmeticException{
}
throws用于方法声明处,用来声明该方法可能发生的异常类型,可以是多个异常类型,用来强制调用该方法时处理这些异常。
抽象方法也可以使用throws
运行时异常与编译期异常
运行时异常
程序运行时抛除的异常,所有 RuntimeException 的子类都是运行期异常。
- 数学异常
- 空指针异常
- 数组下标越界
- ……
运行时异常可以顺利的通过编译,只有在运行时才会出现异常
编译期异常(Checked Exception)
除去运行期的异常都是编译期异常,也称为检测异常。
- IOException
- SQLException
- ……
编译期异常指的是我们在编译期就要去处理的,否则连编译都无法通过
边栏推荐
- leetcode brush questions diary Calculate the number of elements on the right that is less than the current element
- BulkInsert方法实现批量导入
- R语言将列表数据转化为向量数据(使用unlist函数将列表数据转化为向量数据)
- OpenMLDB + Jupyter Notebook:快速搭建机器学习应用
- One Pass 2074: [21CSPJ Popularization Group] Candy
- 基于ABP的AppUser对象扩展
- 金山云地震,震源在字节?
- 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!
- 一文让你快速了解隐式类型转换【整型提升】!
- JS Deobfuscation - AST Restoration Case
猜你喜欢
Under the NVM node installation;The node environment variable configuration
[Microservice~Nacos] Nacos service provider and service consumer
Metasploit常用命令、技术功能模块
2022年中国第三方证券APP创新专题分析
leetcode:321. 拼接最大数
Five Star Holdings Wang Jianguo: Deepen the track with "plant spirit" and promote growth with "animal spirit"
OFDM 十六讲 7 - Inter-Symbol-Interference
Liver all night to write a thirty thousand - word all the commands the SQL database, function, speaks clearly explain operators, content is rich, proposal collection + 3 even high praise!
Jinshanyun earthquake, the epicenter is in bytes?
MySQL——JDBC
随机推荐
Evolution of MLOps
17-GuliMall 搭建虚拟域名访问环境
国内手机厂商曾为它大打出手,如今它却最先垮台……
PHP 2D array sorted by a field
从产品角度看 L2 应用:为什么说这是一个游乐场?
十步以内,用小程序快速生成App!
Presto Event Listener开发
小程序+自定义插件的关键性
一文让你快速了解隐式类型转换【整型提升】!
R语言ggplot2可视化:使用ggpubr包的ggerrorplot函数可视化误差线(可视化不同水平均值点以及se标准误差)、设置add参数为dotplot添加点阵图
leetcode:332. 重新安排行程
JS–比想象中简单
R语言检验时间序列的平稳性:使用tseries包的adf.test函数实现增强的Dickey-Fuller(ADF)检验、检验时序数据是否具有均值回归特性(平稳性)、不具有均值回归特性的案例
Flask's routing (app.route) detailed
xctf攻防世界 Web高手进阶区 ics-05
用户代码未处理MetadataException
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
JS Deobfuscation - AST Restoration Case
mysql 找不到或无法加载已注册的 .Net Framework Data Provider。
OpenMLDB + Jupyter Notebook:快速搭建机器学习应用