Java开发知识之Java的异常处理
Java开发知识之Java的异常处理
一丶异常概述
在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段.
比如我们的QQ.有的时候就崩溃了.比如出现xxx错误.让你上报错误信息什么的. 意思就是 QQ的代码不能运行了.
但是,直接崩溃又不好看.对用户不好. 所以就用异常处理接受. 我弹出一个错误框.告诉你已经错误了.代码不能运行了.让你上传或者重新启动. 异常做的事情就是这样.只能这样做最后的一点事情.但是了解一下还是必须的.
1.异常说明
异常主要作用: 代码超出了程序员可控范围. 如用户的数据出错.导致程序出错. 或者打开文件的时候.也会出错.在程序中可能出现的这种错误.我们都称之为异常.在C++ 中一样有异常处理. 如果是底层.那么会更复杂.在汇编的角度来说.
2.Java中的异常.
在程序编程中. 我们不能 除0. 除0就会有异常,在C++中内存访问异常就是C0005; 我们可以编写代码,告诉大家什么是异常.
public class JavaMain {public static void main(String[] args) {int Number = 10;int NumberCount = 10 / 0;}}
运行结果
这一串英文可以翻译为:
异常 在线程 main中. java.lang.ArithemeticExeception 接受的 / 除 0 错误. 在 man函数的第16行位置.
可以准确的输出.这个就是异常.异常一旦处理.代表了其程序已经不能执行了.不过你可以接受异常对其进行处理.比如我输出一段话.
二丶异常的捕获与处理
1.异常处理 try catch
我们上边说过. 当异常产生的时候.我们可以进行处理.
语法:
try{会出现的异常代码.}catch(Exception e){异常出现后我们进行捕获.进行你自己的操作.比如输出一段话.} catch(Exception a){.....}
代码如下:
public static void main(String[] args) {try {int Number = 10;int NumberCount = 10 / 0;}catch(Exception e) {String Error = e.getMessage();e.printStackTrace();}}
我们捕获了异常. 任何异常都可以使用 Exception这个对象的引用来接受. 这个类就相当于异常的全局父类. 任何异常处理类都继承它.所以可以用它接受一下.并且调用方法.输出错误.
输出结果:
注意: 如果我们使用的try语句中.有代码出现了异常.那么会去寻找对应的Catch语句进行处理.但是如果我们catch语句不输出结果.或者不加代码.那么可能程序就与你的预期不对.因为以前不使用的时候.出了异常我们知道哪里错误了.
但是现在你自己处理catch不输出错误.这样就会造成一种假象就是我的程序没有出错.但是为什么运行结果不对. 因为已经除了异常了.但是你没有进行处理而已.
2.异常处理语句 try catch finally
在C++中,标准的异常处理就是try catch .java中也可以这样做.
但是此时可能遇到一个问题.如果我们已经知道出现异常了.但是想要释放资源怎么办.所以使用另一种 java的处理语句
语法;
try{ } catch(Exception e){ } finally{ }
finally的作用就是,不过try catch语句怎么执行.最终都会执行finally语句的.
执行流程:
try捕获异常. 交给 catch处理. catch处理完了. 指向finally语句.
三丶Java中的常见处理类.
例如上面的我们 除0异常.就是算数异常.我们可以使用此类进行接收.
四丶自定义异常与异常抛出
用户可以自定义异常.并且出现了异常.可以抛出这个异常.
1.继承父类 Exception 类.
2.使用throw语句. 方法上使用throws语句.
1.继承父类.
public class MyException extends Exception {public MyException() {// TODO 自动生成的构造函数存根 }public MyException(String message) {super(message);// TODO 自动生成的构造函数存根 }public MyException(Throwable cause) {super(cause);// TODO 自动生成的构造函数存根 }public MyException(String message, Throwable cause) {super(message, cause);// TODO 自动生成的构造函数存根 }public MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);// TODO 自动生成的构造函数存根 }}
我们可以只实现一个构造. 不过我使用的Exception进行继承的.它会自动重写父类的信息.
此时我们就有了一个异常类. 叫做MyException类.
2.创建方法.抛出自定义异常.
我们创建一个类.这个类中创建一个方法.方法里面是处0错误.我们自定义处理.
public class MyTest {public MyTest() {// TODO 自动生成的构造函数存根 }public static void ExceptionRun()throws MyException{try {int a = 10;int b = 11;if ((a + b) >= 21) {throw new MyException("数字大了");}}catch (MyException a) {System.out.println(a.toString());}}}
1.我们方法中写了程序. 如果 数字 > 21.我们就抛出异常.如果我们有catch语句接受.则进行输出了. catch语句的类就是我们的异常类. 也可以是它的父类.
2.方法上加了 throws.意思就是说. 如果这个方法出了异常.且catch语句中并没有捕获到.那么就会上层进行异常捕获.也就是说上层需要加上try catch 来使用这个方法.
如果上层不使用. 那么上层函数继续使用throws进行抛出. 如果都没有处理.则Java自动进行处理.直到程序出错.
如下:
我们的上层函数调用位置.并没有使用try catch进行捕获.继续抛出了.
throw: 这个主要用于抛出异常对象.一旦程序遇到throw则代码不会继续执行了.
throws: 用在方法中. 主要是当前方法没有捕获异常.就会抛出.让上一层进行接收.
五丶异常跟错误的区别.
Java中有运行时异常. 我们上面所说的Exception 是所有异常的"父类" 针对的是异常.其实它也是一个子类. 而它的父类派生出了错误类 Error 跟 异常类 (Exception)而已.
流程图:
异常跟错误:
异常指的就是程序出问题了.不过还可以补救.错误就是你代码都写错了.程序都不能运行. 或者这类错误很严重.会直接消耗进系统资源.造成无法挽回的损失.
六丶总结
1.异常的所有父类 Exception接受.
2.异常语法 : try catch(异常类. 引用) try catch(异常类,异常引用) finally
3.自定义异常继承 Exception即可. 使用throw抛出.
4.throw语句抛出异常引用对象.catch中接受我们的异常. throws用于方法.代表当前方法并没有捕获到异常.传递给上一层进行处理.上一层调用trycatch如果不调用继续throws. thrwos可以抛出多个异常.
5.异常跟错误.
1.异常 exception 非严重性的.
2.错误:: error 严重性的.
转载于:https://www.cnblogs.com/iBinary/p/9810079.html
Java开发知识之Java的异常处理相关推荐
- Java开发知识之Java面相对象
Java开发知识之Java面相对象上 一丶什么是面相对象 了解什么什么是面相对象.那么首先要了解什么是面相过程. 面相过程的意思就是. 什么事情都亲力亲为. 比如上一讲的排序算法. 我们自己写的. 这 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java开发知识之Java的包装类
Java开发知识之Java的包装类 一丶什么是包装类 包装类的意思就是对基本数据类型封装成一个类.这些类都是Number的子类.区别就是封装数据类型不同.包含的方法基本相同. 具体可以查询JAVA A ...
- Java开发知识之Java的数字处理类Math类
一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是DecimalFormat类在Java.text包中. 其中 ...
- java开发怎么包装_Java开发知识之Java的包装类
Java开发知识之Java的包装类 一丶什么是包装类 包装类的意思就是对基本数据类型封装成一个类.这些类都是Number的子类.区别就是封装数据类型不同.包含的方法基本相同. 具体可以查询JAVA A ...
- java中math类的作用_Java开发知识之Java的数字处理类Math类
Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...
- JAVA基础再回首(一)——基本概念、JAVA开发工具、JAVA基本语法
JAVA基础再回首(一)--基本概念.JAVA开发工具.JAVA基本语法 学了java,做了android应用开发,现在回想起来,真的是一路坎坷..我在上章博客中提到了我以后的几个学习计划和目标就是把 ...
- java里面string什么意思_「Java基础知识」Java中的字符串是什么
原标题:「Java基础知识」Java中的字符串是什么 字符串顾名思义就是一些字符组合在一起组成的一串数据,称作字符串,在Java中字符串用双引号包围起来,格式为String string = &quo ...
- java里面value_「Java基础知识」Java中包含哪些运算符
原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...
最新文章
- C# 操作Excel
- 品牌管理-JSR303数据校验
- LeetCode 872叶子相似的树-简单
- consul作为服务注册中心
- python调用shell脚本
- 自动驾驶汽车寿命只有四年?
- 简单介绍分析一下JSP所生成的Servlet代码
- @Valid注解详解
- 矩阵论、组合数学基础
- Photoshop 合并序列帧图片单张多帧图片
- 【unity shader】毛绒材质效果的实现
- 微信在线客服系统-微信公众平台开发
- Cat Snuke and a Voyage AtCoder - 2660
- 使用JS判断日期的有效性
- 优化网站提高打开速度
- postfix邮件服务器迁移,记一次搭建Postfix邮件服务器(上篇)
- 好看可乐的韩剧综艺-推荐两部
- flutter拨打电话url_launcher
- MeteoEarth全球天气
- [刷题]剑指offer C++语言刷题-多解法尝试
热门文章
- 微服务中的面向切面编程和更多模式
- 化身阿凡达,国外小哥开源 AI 实时变脸工具 Avatarify
- 上下布局_再出上下铺新布局 新全顺都快被途酷玩出花了 还不来看看?
- latex设置一级标题样式不居中_Word应用“样式”的设置
- list复制到另一个list_一文总结saltstack的十一个常用模块,附实例讲解
- mybatis日期范围查询_15. Django 2.1.7 模型 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询...
- mysql事务管理(重)
- 清空本地_PyQt5播放实时视频流或本地视频文件
- java机器PDF_机器人制作入门(第3版)PDF 下载
- 去掉java文件中的注释_利用JavaParser去除java文件中的注释