对Java异常的理解
2024-09-19 18:42:40
JAVA小白手写总结
提示:本篇简单列举了一些Java中的异常与异常处理
前言
提示:很多小伙伴们都会问到,什么是异常呢,又该怎么解决呢?
下面我们就从下面的一个案例中切入今天的内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、异常是什么?
示例:你要从一个文件读信息,可这个文件不存在,程序无法运行下去了,故程序要抓这些异常,通过异常处理机制来抛出这些异常,程序员就可以通过抛出的异常来修改代码。try{}catch{}finally{}try块中放入可能会出现异常的代码,catch块负责捕获异常,finally块负责处理一些必须执行的代码,比如关闭流等。
二、异常的种类
1.认识异常的两大类
在Java中我们将异常分为两大类
- Error,表示的是虚拟机错误
- Exception,表示的是编码、环境、用户操作输入时出现的问题
2.常见的几类异常
- 空指针异常 NullPointerException
- 数组下标越界异常 ArrayIndexOutOfBoundsException
- 类型转换异常 ClassCastException
- 算术异常 AirthmeticException
- 文件异常 IOException
三、异常的处理
处理异常时我们通常采用try—catch以及try—catch—finally来处理异常
1、处理异常
- try代码块中存放的是要监控的区域
- catch代码块中捕获异常
- finally代码块中处理善后工作,一般存放IO流/资源的关闭
结构如下:
try{
//有可能出现异常的语句
}catch(Exception e){//异常的类型 和接受对象
}finally {
//异常的出口,最后执行且一定被执行
}
package com.yichang;
public class Test {
public static void main(String[] args) {
try {
System.out.println(1/0);//0不能做除数
}catch (Exception e){
e.printStackTrace();//打印错误信息,给程序员看的
System.out.println("异常");//给客户看的
}finally {
//一般做收尾工作
System.out.println("finally");
}
}
}
2、异常抛出
- throws表示方法准备要扔出来一个异常
- throw表示向外抛出异常
public void diivide(int one,int two) throws Exception{
if(two == 0){
throw new Exception("两数相除,除数不能为0");
}else{
System.out.println("两数相除,结果为"+one/two);
}
}
实际应用中的经验总结
- 处理运行时异常时,采用逻辑去合理规避同时辅助try—catch处理
- 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
- 对于不确定的代码,也可以加上try—catch,处理潜在的异常
- 尽量去处理异常,切忌只是简单地调用printStackTrace()去打印输出
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定
- 尽量添加finally语句块去释放占有的资源
最新文章
- c# 无法加载 DLL xxxxxxxx找不到指定的模块。 (异常来自HRESULT:0x8007007E)。的一个解决方法
- 【BZOJ 1051】【HAOI 2006】受欢迎的牛
- angularjs 迭代器
- 【转载】Android推送方案分析(MQTT/XMPP/GCM)
- leetcode first bad version python
- QList 和std::list的比较
- Bundles
- hdu1030
- Jasmine 的自定义部分
- Java企业微信开发_Exception_02_java.security.InvalidKeyException: Illegal key size
- Lucene详解
- Maven教程(4)--Maven管理Oracle驱动包
- Stack类常用api
- [C++ Primer Plus] 第7章、函数(二)课后习题
- 2月第3周业务风控关注|上海网信办复测23个被约谈APP 涉及1号店、小红书等
- 洛谷 P4294 [WC2008]游览计划
- IntelliJ IDEA2017 激活方法 最新的
- 关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】
- 纯Java JDBC连接数据库,且用JDBC实现增删改查的功能
- Sparse AutoEncoder简介
热门文章
- leetcode 122 123 309 188 714 股票买卖 动态规划
- vue 二级子路由跳转不了 bug
- TS &; ES-Next &; playground
- Jamstack Conf 2020
- Python Learning Paths
- Machine Learning &; ML
- css var &; auto width css triangle
- NGK全球启动大会圆满落幕
- SpringBoot+Vue豆宝社区前后端分离项目手把手实战系列教程01---搭建前端工程
- alpakka-kafka(1)-producer