JAVA中的异常-知识整理
学了JAVA数组之后,开始整理一下异常的部分;
JAVA相比于C语言多了异常处理部分,于我而言的话,学习异常的时候总有一个问题,为什么能用if-else处理的问题,非要再用一个新模块异常来解决。
之后在看书的时候明白了这个问题的答案,同样分享出来;
首先看下面这个伪语言描述的例子,这是伪代码不能运行的;
openTheFile;
determine its size;
allocate that much memory;
read-file;
closeTheFile;
他的功能是打开文件,读取内容,读完关闭文件;
根据文件的大小分配内存空间。
如果在没有学习异常的时候,我们要让程序变得perfect;
就要进行条件判断;
openTheFile;
if(theFilesOpen) {
determine the length of the files;
if(gotTheFileLength) {
allocate that much memory;
if(gotEnoughMemorry) {
read the file into memoory;
if(readField) {
errorCode=-1;
}
else {
errorCode=-2;
}
}
else {
errorCode=-3;
}
}
else {
errorCode=-4;
}
}
else {
errorCode=-5;
}
可以看出这段代码增加了很多判断语句,目的是保证在前一步正确的情况下再执行下一跳语句,是不是很繁琐,那如果用异常的话应该怎么处理呢;
先看知识点,最后结尾再看一下异常如何处理;
这里不太多复述基础知识点,直接看重点;
一、try-catch处理异常;
我们用例子来说明:
int i=4;
int arr[]= {1,2,3,4};
try {
System.out.println(arr[i]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("下标越界");
}
}
这里我们定义了一个大小为4的数组arr;
我们知道arr【4】这个元素是不存在的,如果我们输出的话JAVA会给你报一个异常,所以我们就用这种方法来处理异常;
看代码:
try中的部分是有可能出现异常的代码部分;
catch中,括号内是抛出的异常,例子中就是下标越界的异常;
然后大括号里面要怎样处理异常的代码部分;
最后也可以加一个finally{};就是最后执行的代码;
JAVA中为了方便给了我们一些公用的异常(也就是catch中括号里面的部分);
二、公共异常
1,ArithmeticException
整数除法除数为0的异常;
2,NullPointerException
对象没有实例化,访问该对象时的异常;
3,ArrayIndexOutOfBoundsException
数组下标异常(例子中的就是)
4,FileNotFoundException
存取一个不存在的文件时的异常;
5,IOException
通常的I/O错误引发的异常
当然还有一些其他的,我只是拿出了几个比较典型的,如果有需要得自己查阅资料了;
三、抛出异常和自己创建异常;
有些时候,我们要自己定义一些范围或者类型,那在JAVA中是不报错也不报异常的,比如说矩阵的相乘需要第一个行数等于第二个的列数,JAVA是不会管你是不是相等(雨我无瓜);
这个时候我们就要用到自己创建异常了;
还是,我们用例子来说明;
首先我们新建一个类MyException;
public class MyException extends Exception{
public String toString() {
return "对不起,报异常了";
}
}
我们让这类继承于Exception这个父类;
然后重写类的toString函数;
然后再建一个类,我用的是以前的就不要在意名字了;
public class Array{
static public void compute(int a) throws MyException {
if(a<5) {
System.out.println(a);
}
else {
throw new MyException();
}
}
}
我们在这个类中写了一个compute函数,函数里有一个int型的参数,然后呢;
记住在后面加上throws MyException;
我们在函数里面判断,如果参数小于5;
我们就输出这个参数;
反之的话,我们就抛出MyException这个异常;
这样这个函数就写完了;
然后来到主函数;
public static void main(String[] args) {
Array a=new Array();
try {
a.compute(10);
}
catch(MyException e) {
System.out.println(e);
}
}
我们创建对象后,调用compute函数,参数给的10>5;
运行后控制台会输出“对不起,报异常了”。
这个就是我们自己写的异常;
关于基础的自定义异常的步骤基本就这三部;
至于其他更复杂的就要自己去尝试并学习了;
然后回过头来说最开始的那地方;
如果用try-catch处理的话,应该会了吧;
try {
openTheFile;
determine its size;
allocate that much memory;
read-file;
closeTheFile;
}
catch() {}
catch() {}
catch() {}
就像这样的代码了,是不是的确更清楚而且代码量也会变少;
关于异常,就说这些,OK;
结束;
END;
本文地址:https://blog.csdn.net/weixin_46726346/article/details/107062237
上一篇: “沉默”的拼多多,市值已蒸发12300亿
下一篇: 微信红包6大价值,13大玩法