$.getjson异常信息提示_【Java视频教程】day24-异常??????
异常
异常介绍
- 异常的概念
异常,就是不正常。
程序运行中出不正常情况,就叫做异常。
java中的异常:空指针异常;数组下标越界异常;类型转换异常;……
为什么要学习异常
- 程序运行时不可能不出现任何问题的;
即使我们的程序本身没问题,但是程序一般是要给用户使用的,我们不能控制用户不输入错误数据;而且有的程序会需要使用第三方的数据,而这第三方的数据也不能保证没有问题;
一个好的程序,不是不会出现问题,而是出现问题后,有预备方案可以解决;
学习异常技术,可以在编写代码时,就为程序中可能出现问题的地方提前书写处理代码,当程序真的出现问题时,就能够执行相应的操作,提高程序的健壮性;
- 程序中真的出现问题时,需要提供一个对用户友好的提示信息,同时应该有一种机制可以把错误发生的位置、原因等信息记录显示出来,方便开发者排查错误;
学习异常技术,就可以在编写代码时就提前把这些操作在可能出现问题的地方写好。
https://www.zhihu.com/video/1067532705738231808
异常使用演示
演示使用异常技术提供对用户友好的错误提示
需求:编写一个方法,根据传入的下标,从数组{ "快学大数据-JavaEE","快学大数据-UI/UE","快学大数据-Python" }中取出数据;
原来的代码:
原来的异常提示信息:
使用自定义的异常信息来处理程序:
新的提示信息:
https://www.zhihu.com/video/1067534100948275200
异常信息显示过程
https://www.zhihu.com/video/1067534355660009472
异常技术的继承体系
在抽取和封装问题的过程中,形成了异常的体系结构:
Throwable:它是异常的顶层父类(它的父类是Object)。
Error:它是错误的问题顶层父类。
Exception:它是一些常见的异常问题的顶层父类。
我们讲解的异常主要针对的Exception这类问题。而针对Error问题,这时就必须对程序的架构、设计、代码进行重新的调整。
https://www.zhihu.com/video/1067534831025647616
自定义异常
- 自定义异常的原因
JDK自己提供的异常很全面,根据开发中大多数问题,都有相应的异常类,但是我们使用起来是比较麻烦的;
异常类太长,记忆和书写都不方便;
异常类很多,开发者不可能都记下来,使用时就很不方便;
所以开发中,我们一般会自己定义异常类,来描述程序中可能出现的问题;
【重点】自定义异常的步骤
自定义异常类的步骤:
- 自定义一个类,继承Exception或者RuntimeException类,使其成为一个异常类;
- 在这个类中提供一个有参构造函数,接受一个字符串类型的参数,用来接受抛出异常时的错误信息;
- 在构造函数中通过super关键字调用父类有参构造函数,将接受到的参数传递给父类;
- 自定义异常演示
需求:创建一个描述人的信息的类,需要对年龄的合法性进行判断;
自定义的异常类:
自定义异常类的使用方式:
https://www.zhihu.com/video/1067535251496169472
异常的分类
编译期异常(受检查异常):
指的是Exception及其子类(不包括RuntimeException和它的子类)表示的异常;
特点是:如果在程序中使用throw关键字显示的抛出这类异常,编译时编译器会检查有没有书写处理代码,如果没有就会报错;
(也就是说,程序中如果抛出这类异常,必须处理)
运行期异常(不受检查异常):
指的是RuntimeException和它的子类表示的异常;
特点是:如果程序中使用throw关键字显示的抛出这类异常,不管书写处理代码没有,编译时编译器都不管;
编译期异常和运行期异常,指的是编译的时候,是否检查书写了处理代码;
不管是什么异常,真正发生,都是在程序运行的时候;
如果开发中,有的问题必须要被处理,就应该声明为编译期异常;否则可以声明为运行期异常;
https://www.zhihu.com/video/1067535590941257728
异常的处理
准备的编译期异常类:
public class MyException1 extends Exception {public MyException1(String msg) {super(msg);}
}
public class MyException2 extends Exception {public MyException2(String msg) {super(msg);}
}
https://www.zhihu.com/video/1067535636982054912
异常的声明
如果程序不能自己解决出现的问题,就可以使用throws关键字,在函数的参数列表后面、函数体大括号前面将异常的类型声明出去,目的时告诉调用者,这个函数执行时有可能会出现什么问题;这种处理方法就叫做异常的声明;
一般函数中,如果是因为参数不合法而出现的问题,应该使用声明来处理异常,告诉调用者这个函数可能出现什么问题;
https://www.zhihu.com/video/1067535697573056512
异常的捕获
如果程序中出现的问题可以自己解决,就可以使用try-catch代码块,将可能出错的代码包起来,然后书写处理代码;这种处理方式叫做异常的捕获;
异常的捕获格式:
try{这里应该书写的是可能出现问题的代码;}catch(这里应该书写的是一个变量,用来保存异常对象){这里应该书写的是问题被捕获后的处理代码;}
注意:捕获的多个异常,如果没有继承关系,他们的先后位置没有约束;
如果有继承关系,子异常应该在上面,父异常应该在下面;
注意:上面的这种写法,要求被捕获的各种异常类,不能有继承关系;
https://www.zhihu.com/video/1067535842339434496
异常的其他细节
异常在继承中的注意事项
子类重写父类函数,不能比父类函数声明更多编译期异常;
- 父类方法没有声明异常,子类重写的方法不能声明编译时异常
- 父类函数声明了编译期异常,子类可以不声明;
- 父类方法声明了一个编译异常,子类重写的方法只能声明这个异常或它的子异常
- 父类方法声明了多个编译异常,子类重写的方法只能声明这些异常的子集或子集的子类
https://www.zhihu.com/video/1067536054478827520
最新文章
- 个人推广网站不花钱的一些方法
- css样式之background详解(格子效果)
- UVa1339 - Ancient Cipher
- mysql 语法积累
- 有关算法方面的经典书籍推荐
- MySQL之单表查询、多表查询(一)
- 【人脸对齐-Landmarks】300W 数据集
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
- ListView自适应实现表格
- 杭电1229 还是A+B
- php 保存json格式数组 json_encode /u 不转义
- 参数估计:矩估计和最大似然估计
- 用计算机弹让我做你的眼睛,童珺 - 让我做你的眼睛 (改编版)-酷歌词...
- 怎么为PE添加输入法
- python3 经典练习题:输入三个数,输出三个数中的最大数
- web前端面试学习指南
- MySQL数据库在Windows系统上安装和基本使用
- 苹果手机测距离_重量仅6g,智能距离检测,安卓苹果平板手机都能用,声光多级提醒...
- 淘宝自动查券找券返利机器人实现方法分享
- 数据库(oracle)服务器的cpu大于80%