java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
java的错误其实也是一些类文件,它们之所以可以在程序出错时被抛出,是因为在你调用了某些方法的时候,为这些方法需要做一些预先的处理,比如你要调用一个对象的一个属性,如果你所调用的对象是空的话,那么程序是不可以执行的,但是又不能不告诉你,所以就用一个错误来提示你。
异常被抛出,肯定是因为带有异常检查的方法被调用了,可以在构造方法,中进行指定,当别人调用这些方法的时候,并且没有通过检查,那么exception就会被抛出或者被捕获。而调用这个方法的方法,要么捕获要么继续抛出交给它的父类去处理。总之:只要是会出现异常的地方,只有两种处理方式,第一:使用try和catch进行捕获。第二:把错误交给父类去处理,就是throws exception。
这些错误提示,或者在你所调用的方法里面有所定义,或者是在虚拟机JVM运行时候有所定义。在虚拟机运行时候抛出的异常就是 运行时异常,包括 NullPointExcetion,ClassCastException,IndexOutOfBoundsException。总之:它肯定是存在的,我们有时在想,我根本就没有在我自己定义类里面的方法上添加异常,可是它也会抛出异常,这是因为类在程序判断的时候,满足了某些条件,于是程序就自动实例化了一个错误的对象,然后把这个错误给抛了出来,比如说NullPointerException空指针异常,你可能会说这个错误的话,我找不到它定义在哪里啊?可是你要知道的是,你的方法终究是要运行的,当你运行的时候,虚拟机在执行方法的时候它是会进行检查的,它检查的时候当然也是调用方法了,而在调用之前,它会把对你将要调用的对象进行检查,如果有错就会实例化一个NullPointerException出来,检查是很容易理解的事情,就像你实例化了一个类,然后在运行的时候,对这个类的一些信息进行判断,只是jvm检查的比较复杂,但是思想肯定是一致的。
2 异常的分析:
在我们运行程序的时候,如果出现了,错误,那么异常信息会被打印出来,打印的时候的顺序是:先打印此类所在的继承链的父类的异常信息,之后再打印子类,以此类推。因为什么呢?因为对象实例化的过程也就是这个顺序,所以打印的时候顺序也是一样的,当然如果你已经对错误进行了处理的话,那么自然父类的错误就不会被打印出来了,所以说当出现异常的时候,那些最先打印出来的都是父类的信息,你出错的调用位置应该是在下边子类中。
自定义异常:
上面的分析可以知道,如果要自己定义异常的话,只需要自己定义一个类,这个类只需要集继承Exception类,然后你可以为这个类指定构造方法,根据你自己的需求去打印出你想提示的信息,在抛出的时候,也就是在执行条件判断后throw new MyException的时候,你可以指定异常的ID,这完全是你自己可以操作的事情,比如你想要在打印错误的同时,把错误的种类也打印出来就可以把下面的那个MyException的构造函数修改为:
测试举例:
- <span style="font-size:14px;">package exception;
- public class MyException extends Exception {
- private static final long serialVersionUID = 1L;
- private int idNumber;
- public int getIdNumber() {
- return idNumber;
- }
- public MyException(String exception, int id) {
- super(exception);
- this.idNumber = id;
- }
- }</span>
测试自定义错误:
- package exception;
- public class TestMyExeption {
- public void regist(int num) throws MyException {
- if (num < 0) {
- throw new MyException("人数为负数不合理!", 1);
- }
- System.out.println("throw 之后的程序不能执行" + num);
- }
- /**
- * 把异常给抛出去,交给更高层处理
- *
- * @throws MyException
- */
- public void manager() throws MyException {
- regist(-100);
- }
- /**
- * 把异常给截获并处理
- */
- public void manager1() {
- try {
- regist(-1330);
- } catch (MyException e) {
- // 在处理错误的时候,可以根据自己的需要去打印错误的信息
- System.out.println("出错了,错误的编号:" + e.getIdNumber());
- }
- System.out.println("程序可以继续执行!");
- }
- public static void main(String[] args) throws MyException {
- new TestMyExeption().manager();
- // new TestMyExeption().manager1();
- }
- }
抛出 Exception:
- package exception;
- import java.util.Scanner;
- public class TestThrow {
- public static void main(String[] args) {
- TestThrow t = new TestThrow();
- System.out.print("请输入您的年龄:");
- System.out.println("您的年龄:" + t.inputAge());
- }
- public int inputAge() {
- int result = -1;
- Scanner scan = new Scanner(System.in);
- while (true) {
- try {
- result = scan.nextInt();
- if (result < 0 || result > 130) {
- Exception me = new Exception("年龄超出合理范围!");
- throw me;
- }
- break;
- } catch (Exception e1) {
- System.out.print(e1.getMessage() + "请重新输入:");
- continue;
- }
- }
- return result;
- }
- }
- 顶
转载于:https://www.cnblogs.com/1020182600HENG/p/6738200.html
java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...相关推荐
- java异常处理之throw, throws,try和catch
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...
- JAVA异常处理、自定义异常、throws关键字与throw关键字、运行时异常
异常捕捉, try-catch语句. package YH;public class Thundering {public static void main(String[] args) {try { ...
- java异常处理(较详细)
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的. 比如: 客户输入数据的格式, 读取文件是否存在, 网络是否 ...
- Java异常处理及异常机制介绍
Java异常处理及异常机制介绍 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述. JAVA中用2种方法处理异常: 1.在发生异 ...
- 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)
多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...
- 复习Java异常处理_异常分类_自定义异常_线程初步了解
复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常.线程 教学目标 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点 ...
- Java异常处理(2)--异常处理机制及自定义异常
在编写程序时,经常要在可能出现错误的地方加上检测的代码,如进行x/y运算时,要检测分母为0,数据为空,输入的不是数据而是字符等.过多的if-else分支会导致程序的代码加长.臃肿,可读性差.因此采用异 ...
- Java 异常处理 try catch finally throws throw 的使用和解读(一)
最近的一个内部表决系统开发过程中, 发现对异常处理还存在一些模棱两可的地方, 所以想着整理一下 主要涉及到: 1.try catch finally throws throw 的使用和解读 2.自定义 ...
- Java 异常处理(标准抛异常、异常处理、多异常、Finally、多线程异常处理、获取异常的堆栈信息、链试异常、自定义异常)
使用 catch 处理异常(标准抛异常) public class Main {public static void main (String args[]) {int array[]={20,20, ...
最新文章
- Android RadioButton 修改选择框
- TCP/IP、SOCKET、HTTP之间的联系与区别
- c/c++ 整形转字符串
- 计算机网络工程与菅理,网络工程与管理
- Spring Boot怎么样注册Servlet三大组件[Servlet、Filter、Listener]
- 打包无法识别lombok
- 深度梳理这10个国家的AI发展战略
- boost::hana::back用法的测试程序
- Oracle学习(十四)分表分区
- 如何使用CSS实现居中
- 数字图像处理 中值滤波 MATLAB实验
- 《天天数学》连载18:一月十八日
- Linux内存管理:函数调用图谱-1
- ABP源码分析四十:ZERO的Application和Tenant
- 巧妙的实现 CSS 斜线
- java面试资料整理(高级必备)
- python苹果手机照片导入电脑_通过python获取苹果手机备份文件中的照片,视频等信息采集...
- 获取照片经纬度(wgs84)转高德经纬度(gcj02)
- Android studio 冲突解决
- 【Keras】使用 TPU 训练 TensorFlow 模型