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语句块去释放占有的资源

最新文章

  1. c# 无法加载 DLL xxxxxxxx找不到指定的模块。 (异常来自HRESULT:0x8007007E)。的一个解决方法
  2. 【BZOJ 1051】【HAOI 2006】受欢迎的牛
  3. angularjs 迭代器
  4. 【转载】Android推送方案分析(MQTT/XMPP/GCM)
  5. leetcode first bad version python
  6. QList 和std::list的比较
  7. Bundles
  8. hdu1030
  9. Jasmine 的自定义部分
  10. Java企业微信开发_Exception_02_java.security.InvalidKeyException: Illegal key size
  11. Lucene详解
  12. Maven教程(4)--Maven管理Oracle驱动包
  13. Stack类常用api
  14. [C++ Primer Plus] 第7章、函数(二)课后习题
  15. 2月第3周业务风控关注|上海网信办复测23个被约谈APP 涉及1号店、小红书等
  16. 洛谷 P4294 [WC2008]游览计划
  17. IntelliJ IDEA2017 激活方法 最新的
  18. 关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】
  19. 纯Java JDBC连接数据库,且用JDBC实现增删改查的功能
  20. Sparse AutoEncoder简介

热门文章

  1. leetcode 122 123 309 188 714 股票买卖 动态规划
  2. vue 二级子路由跳转不了 bug
  3. TS & ES-Next & playground
  4. Jamstack Conf 2020
  5. Python Learning Paths
  6. Machine Learning & ML
  7. css var & auto width css triangle
  8. NGK全球启动大会圆满落幕
  9. SpringBoot+Vue豆宝社区前后端分离项目手把手实战系列教程01---搭建前端工程
  10. alpakka-kafka(1)-producer